JNDI配置步骤:
1.JNDI是 java naming and directory interface 作用是用来完成从服务器(tomcat)中查询数据源,与以往的JDBC的使用不太相同,但是JNDI的作用恰恰帮我们完成了JDBC的获得Connection对象的步骤。
2.JDBC获得是一个连接对象,但是JNDI是帮我们获得一个数据池,数据池中有多个连接,我们可以任意获得一个连接,所以JNDI在完成数据库连接时能够提供数据库连接一个限定等配置!!
具体步骤如下:
1.配置服务器(tomcat)的conf/context.xml文件
添加如下节点:
<Resource
name="jdbc/books" 数据源名称
auth="Container" 数据源由服务器创建
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="test"
password="123456"
dirverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
url="jdbc:sqlserver://localhost:1433;databasename=数据库名字"
/>
2.添加JAR包到tomcat安装目录下的lib文件夹下
3.配置web.xml文件
<resource-ref>
<res-ref-name>jdbc/books</res-ref-name> 这个值是要和conf/context.xml文件中name属性值相同
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
通过以上几步的配置基本完成。
剩下就是测试代码:
try {
Context ctx = new InitialContext();
//此处要添加的是查找数据源的名字 但是要加前缀java:comp/env
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/books");
Connection conn = ds.getConnection(); //通过数据源获得数据源中的连接
String sql = "select * from person";
PreparedStatement pstmt = conn.prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1));
}
} catch (Exception e) {
e.printStackTrace();
}
注意:以上测试代码需要写在servlet中,因为数据源对象是在服务器(tomcat)中加载创建的,所以启动tomcat后会自动创建dataSource对象