作为新手,首次尝试同jndi连接数据库,遇到不少困难,总结一下知识点,以免忘记:
JNDI是J2EE中一个很重要的标准,通常我们是在J2EE编程中用到,Tomcat中提供了在JSP和Servelt中直接使用JNDI的方法,主要是通过dbcp连接池
重点讲使用:
1.配置context.xml
注意地址是:tomcat安装目录下的conf,该目录下应该有了context.xml文件。貌似以前的版本是在项目目录中的META-INF目录下配置,我刚开始时参考是也是老版本的操作方法,谁知道试了一晚都不行。。。如果不是那里配置的话会可能出现这样的错误提示:javax.naming.NameNotFoundException: Name jdbc is not bound in this Context?
现在开始配置:
<Context path="/Manager" reloadable="true"> <Resource name="hello" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" username="root" password="123456" maxIdle="4" maxActive="4" maxWait="5000" url="jdbc:mysql://127.0.0.1/jspdev" /> </Context>其中:name:指定Resource的JNDI名字type:指定Resource所属的Java类名driverClassName:指定连接数据库的JDBC驱动程序username:指定连接数据库的用户名password:指定连接数据库的口令maxIdle:指定数据库连接池中的最大空闲连接数目,0表示不受限制maxActive:指定数据库连接池中的最大活动连接数目,0表示不受限制maxWait:指定连接池中连接处于空闲状态的最长时间,超过会抛出异常,-1表示无限url:指定连接数据库的URL
2.将jdbc驱动包放在tomcat安装目录的lib文件夹下
3. 在Web应用中使用数据源:javax.naming.Context提供了查找JNDI Resource的接口,可以通过三个步骤来使用数据源对象:A.获得对数据源的引用:Context ctx = new InitalContext();DataSource ds = (DataSource)ctx.lookup("java:comp/env/hello");B.获得数据库连接对象: Connection con = ds.getConnection();C.返回数据库连接到连接池: con.close();在连接池中使用close()方法和在非连接池中使用close()方法的区别是:前者仅仅是把数据库连接对象返回到数据库连接池中,是连接对象又恢复到空闲状态,而非关闭数据库连接,而后者将直接关闭和数据库的连接。
刚刚接触jdni对于原理还不清楚,先记住方法先