tomcat配置JNDI数据源及问题解决

      网上其实这种例子很多,但是往往有好多人配置时会出现问题,现在就以tomcat6为例,演示一下配置步骤,以及在配置过程中出现的问题的解决方法.

     配置步骤如下:

步骤1: 在你的web应用的web.xml文件中增加如下配置  注意需要在节点<web-app>内部

<resource-ref>     
  <res-ref-name>jdbc/mysql</res-ref-name>     
  <res-type>javax.sql.DataSource</res-type>     
  <res-auth>Container</res-auth> 
 </resource-ref>

步骤2:在conf\Catalina\localhost路径下找到你的web应用对应的xml文件  在文件配置虚拟路径下增加下面代码.

<Resource
        name="jdbc/mysql"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="root"
        password="admin"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/test1?characterEncoding=utf-8"/>

步骤3: java类中获取数据库连接对象的代码

 public Connection getConnection() throws SQLException {
        Connection con = null;
        try {
            Context ctx=new InitialContext();
            DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mysql");
            con = ds.getConnection();
        } catch (Exception e) {
            throw new SQLException();
        }
        return con;
    }

步骤4  测试:

可以再jsp文件中加入如下代码进行测试.细节不多说了.

完成上述几个步骤以后就可以测试了,测试时有时会碰到异常问题如下:

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

出现这个问题的可能是因为配置好了JNDI数据源,我们需要在tomcat容器内进行数据库连接的获取.如果仅仅独立于此应用则会报这个异常.

猜你喜欢

转载自pacer123.iteye.com/blog/1447401