tomcat怎么配置JNDI连接

2025-03-22 16:13:14
推荐回答(3个)
回答1:

方法有两种
与服务器类型是无关的,主要是jar包的放入有关
第一种(C3P0的配置方法为例)
第一步:加载数据驱动包。(C3P0还要导入C3P0连接池使用的Jar:c3p0-0.9.0.jar)
Tomcate 5.5 将数据库驱动包拷贝到tomcathome/common/lib目录下。
Tomcate 6.0 将数据库驱动包拷贝到tomcathome/lib目录下。
地二步:配置tomcat中service.xml:


maxPoolSize="200" minPoolSize="1" initialPoolSize="100" acquireIncrement="2"
idleConnectionTestPeriod="60" maxIdleTime="60"
driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
user="sa" password=""
jdbcUrl="jdbc:sqlserver://localhost:1433;DatabaseName=pubs"
factory="org.apache.naming.factory.BeanFactory"/>

第三步:配置工程中的web.xml文件



jdbc/ds

com.mchange.v2.c3p0.ComboPooledDataSource

Container


第四步:写连接类
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import java.sql.Connection;
public class JndiDao {
public static Connection getConnectionPool3()throws Exception
{
Connection con=null;
Context conx=new InitialContext();
DataSource ds=(DataSource)conx.lookup("java:comp/env/jdbc/ds");
con=ds.getConnection();
return con;
}

}

第二种:(DBCP为例)
第一步:
导入DBCP连接池用到的Jar:naming-factory-dbcp.jar(JVM使用)
(commons-dbcp-1.2.2.jar为tomcat中默认有的DBCP连接池的包,而C3P0的话就要在tomcat中导入C3P0连接池使用的Jar:c3p0-0.9.0.jar)
和数据库驱动包
第二步:
import org.apache.tomcat.dbcp.dbcp.BasicDataSource;//数据源
import org.apache.tomcat.dbcp.dbcp.ConnectionFactory;
import org.apache.tomcat.dbcp.dbcp.DataSourceConnectionFactory;

import java.sql.Connection;

public class DbcpDao {
static BasicDataSource bds=null;
static ConnectionFactory cf=null;
static
{
bds=new BasicDataSource();
bds.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
bds.setUrl("jdbc:sqlserver://127.0.0.1:1433;DatabaseName=pubs");
bds.setUsername("sa");
bds.setPassword("123");

//对连接池进行设置
bds.setMaxActive(300);
bds.setInitialSize(100);
bds.setMaxWait(10000);
bds.setMaxIdle(50);
}

public static Connection getConnectionPool()throws Exception
{
Connection con=null;
//创建出一个位于jvm中的DBCP连接池
cf=new DataSourceConnectionFactory(bds);
//从创建好的连接池中取得连接
con=cf.createConnection();
return con;
}

public static void main(String[] args) {
try {
long time1=System.currentTimeMillis();
//测试获得200个连接所用的时间
Connection[] cons=new Connection[200];
for(int i=0;i {
cons[i]=DbcpDao.getConnectionPool();
}
long time2=System.currentTimeMillis();
System.out.println(time2-time1);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}

}

回答2:

我常用的web项目METE-INF下添加,修改方便些

-

回答3:

我知道