你的位置:首页 > Java教程

[Java教程]Tomcat:定义JNDI资源,访问数据库

Tomcat 中JDBC资源是利用JNDI来设计的,要在Tomcat中配置JDBC资源,学会如何配置JNDI资源就可以了。下面就以JDBC资源来说明如何使用Tomcat的资源服务。

 

1、定义JNDI资源

可以定义成全局资源,也可以定义为针对某个Web Context的资源。

 

方案1:在Context中定义JNDI资源:

定义资源,要使用<Resource>,下面定义一个JDBC资源:

<Context><Resource auth=”Container”name=”jdbc/mysql_jdbcTest”type=”javax.sql.DataSource”driverClassName=”com.mysql.jdbc.Driver”username=”cloudlink”password=”cloudlink”maxIdle=”2”maxWait=”5000”url=”jdbc:mysql:192.168.2.92:3306/jdbcTest?useEncoding=UTF-8”maxActive=”4”/></Context>

 


方案2: 

定义全局的JNDI资源,在tomcat/conf/server.

下面是一个全局资源的定义,将其放在<GlobalNamingResource>中。

<GlobalNamingResource><Resource auth=”Container”name=”jdbc_test_1”type=”javax.sql.DataSource”driverClassName=”com.mysql.jdbc.Driver”username=”cloudlink”password=”cloudlink”maxIdle=”2”maxWait=”5000”url=”jdbc:mysql:192.168.2.92:3306/jdbcTest?useEncoding=UTF-8”maxActive=”4”/></GlobalNamingResource>

 


然后在<Context>链接全局资源: 

<Context>   <ResourceLink global=”jdbc_test_1” name=”jdbc/mysql_jdbcTest” type=”javax.sql.DataSource” /></Context>

 

如此就将一个全局资源链接到一个Context上了。 

 

 

2、在Web应用中定义JNDI资源的引用

 

在web.

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

 

在web应用中定义了jndi资源的引用后,web应用中就可以根据这个引用找到相应的资源。 

 

3、Web应用中使用JNDI资源

 

public void get(HttpServletRequest request, HttpServletResponse response) throws Exception{  Context context=new InitialContext();  Context envContext=(Context)context.lookup(“java:/com/env”);  DataSource ds=(DataSource)envContext.lookup(“jdbc/mysql_jdbcTest”);  Connection conn=ds.getConnection();  Statement stmt=conn.createStatement();  String sql=”select userid, username, age from User”;  ResultSet rs=stmt.executeQuery(sql);  PrintWriter out= response.getWriter();  While(rs.next()){    out.println(rs.getString(1)+”\t”+rs.getString(2)+”\t”+rs.getInt(3)+”<br>”);  }  rs.close();  stmt.close();  conn.close();  out.flush();  out.close();}

 


4、创建相应的数据库、表 

 

 

插入数据:

 

insert into User (userid, username, age) values(‘hello1’,’name1’,20);

  

5、启动Tomcat,进行测试。

在启动Tomcat前,需要在Tomcat/lib下添加MySql的JDBC驱动。