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容器内进行数据库连接的获取.如果仅仅独立于此应用则会报这个异常.