JNDI方式创建数据源

来源:互联网 发布:sql怎么删除置顶列 编辑:程序博客网 时间:2024/05/16 07:13

 WEB环境:tomcat6

在tomcat6下的conf/下找到server.xml 文件

修改如下:

 <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
     <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
   
    <Resource name="jdbc/ora9204"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="100"
        driverClassName="oracle.jdbc.driver.OracleDriver"
        username="clevergirl"
        password="clevergirl"
        url="jdbc:oracle:thin:@192.168.128.129:1521:ora9204"
        defaultAutoCommit="true"
        removeAbandoned="true"
        removeAbandonedTimeout="60"
        logAbandoned="true"
   />
  </GlobalNamingResources>

注意几个红色字的配置

在项目目录下找到\src\WEB-Root\META-INF目录,修改或新增context.xml 内容如下

<?xml version="1.0" encoding="utf-8"?>

<Context path="/sync" privileged="true" antiResourceLocking="false" antiJARLocking="false" reloadable="true">
 <ResourceLink name="jdbc/mysync" global="jdbc/ora9204" type="javax.sql.DataSource" />
</Context>

这个会在项目发布时自动发布到tomcat的配置目录下
默认发布位置是:tomcat\conf\Catalina\localhost\
ResourceLink的作用相当于你给数据库链接定义了一个别名,程序里应该引用这个别名

程序调用如下:

package sync.com.db;

import java.sql.Connection;
import java.sql.SQLException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

/**
 * 获取数据库连接 
 */
public class DBConnection {
   
    public  Connection conn = null;
    static DataSource ds = null;
    static {
  try {
   Context ctx = new InitialContext();
   ds = (DataSource)ctx.lookup("java:comp/env/jdbc/mysync");   //数据库别名
  } catch (NamingException e) {
   e.printStackTrace();
  }
 }  
    protected Connection getConnection(){
     if(conn == null)
  {
   try {
    conn = ds.getConnection();
   } catch (SQLException e) {
    e.printStackTrace();
   }
  }
  return conn; 
    }
    
    /**
     * 关闭数据库连接
     * 
     * @param connect
     */
    public void closeConnection(){
     if(conn != null) {
   try {
    conn.close();
   } catch(Exception e) {
    e.printStackTrace();
   } finally {
    conn = null;
   }
  }
    }
}

 

感谢朋友的帮助,方法不是偶想的,只是偶写的吐舌头

原创粉丝点击