84366992 发表于 2017-1-15 10:15:56

JNDI tomcat

  JNDI数据源简易配置:
  /WebRoot/META-INF/context.xml
   
<Context>
<!--Workflow mysql -->
    <Resource name="jdbc/workflow" auth="Container"
              type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://localhost:3306/workflow"
              username="root" password="" maxActive="10" maxIdle="5"
              maxWait="-1"/>  
  
   
  </Context>
  web.xml
  <resource-ref>
  <description>mysql</description>
  
  
  <res-ref-name>jdbc/workflow</res-ref-name>
  
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>
  mysql的jar包,放到项目下,并放到tomcat目录下
  tomcat-6.0.14\lib\mysql-connector-java-5.1.5-bin.jar
  tomcat-5.5.35\common\lib\mysql-connector-java-5.1.5-bin.jar(tomcat5,可不放)
  测试类:
  import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
  import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
  public class DataSourceUtil {
   // java:comp/env/是必须加的,后面跟你的DataSource名
 private String JNDI = "java:comp/env/jdbc/workflow";
   private DataSource ds = null;
 private Connection conn = null;
 private PreparedStatement pstm = null; 
 private ResultSet rs = null;
   //构造函数
 public DataSourceUtil() {
    try {
   // 初始化查找命名空间
   Context ctx = new InitialContext();
   // InitialContext ctx = new InitialContext();亦可
   // 找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟你的DataSource名
   ds = (DataSource) ctx.lookup(JNDI);
   // 取出连接
   conn = ds.getConnection();
   System.out.println("connection pool connected !!");
  } catch (NamingException e) {
   System.out.println(e.getMessage());
  } catch (SQLException e) {
   e.printStackTrace();
  } finally {
   // 注意不是关闭,是放回连接池.
   //conn.close();
  }
 }
 
 
 
 // 注意不是关闭,是放回连接池.
 public void colse(){
  if(conn != null){
   try {
    conn.close();
   } catch (SQLException e) {    
    e.printStackTrace();
   }
  }
 }
 
 
 public ResultSet find(String sql) throws SQLException{
  pstm = conn.prepareStatement(sql);
  rs = pstm.executeQuery();
  return rs;  
 }
 
 public void displayRs(ResultSet rs) throws SQLException{
  while(rs.next()){ 
         System.out.println("user name is " + rs.getString(1)); 
     }
 }
 
 
 public static void main(String[] args) {
  DataSourceUtil dsu = new DataSourceUtil();
 }
  }
页: [1]
查看完整版本: JNDI tomcat