tomcat怎么配置JNDI连接

网上有好多方法,有的改server.xml有的改context.xml我看了个大概,迷糊的很具体有哪几种配置连接的方法呢?和服务器的类型有关系吗?比如tomcat5和to... 网上有好多方法,有的改server.xml 有的改context.xml 我看了个大概,迷糊的很
具体有哪几种配置连接的方法呢? 和服务器的类型有关系吗?比如tomcat5和tomcat6的连接有区别么?
还有如果是修改context.xml有修改tomcat/conf目录下的,也有为web项目METE-INF下添加的;这2种都可以吗?有什么区别?
展开
 我来答
zhqm_soft
2009-07-10
知道答主
回答量:25
采纳率:0%
帮助的人:0
展开全部
方法有两种
与服务器类型是无关的,主要是jar包的放入有关
第一种(C3P0的配置方法为例)
第一步:加载数据驱动包。(C3P0还要导入C3P0连接池使用的Jar:c3p0-0.9.0.jar)
Tomcate 5.5 将数据库驱动包拷贝到tomcathome/common/lib目录下。
Tomcate 6.0 将数据库驱动包拷贝到tomcathome/lib目录下。
地二步:配置tomcat中service.xml:
<!--在tomcat中配置连接池属性说明
docBase web工程的文件路径
path web工程url的根目录
reloadable 当tomcat重启时候,是否重新加载配置文件
name 数据源的JNDI名
type 资源的类型,此处是数据源
driverClass数据库驱动类,根据不同的数据库 驱动类不同(我用的是MS SQL SERVICE2005)
jdbcUrl 连接字符串
factory 连接工厂类-->
<Context docBase="DataSrc61" path="/DataSrc61" reloadable="true">
<Resource name="jdbc/ds" auth="Container" type="com.mchange.v2.c3p0.ComboPooledDataSource"
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"/>
</Context>
第三步:配置工程中的web.xml文件
<!– 声名工程所需资源-->
<resource-ref>
<!– JDNI资源名 -->
<res-ref-name>jdbc/ds</res-ref-name>
<!– 资源类型 -->
<res-type>com.mchange.v2.c3p0.ComboPooledDataSource</res-type>
<!– 资源范围 -->
<res-auth>Container</res-auth>
</resource-ref>

第四步:写连接类
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.length;i++)
{
cons[i]=DbcpDao.getConnectionPool();
}
long time2=System.currentTimeMillis();
System.out.println(time2-time1);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}

}
dawn1423
推荐于2016-02-04 · TA获得超过204个赞
知道答主
回答量:159
采纳率:100%
帮助的人:37.5万
展开全部
我常用的web项目METE-INF下添加,修改方便些
<?xml version="1.0" encoding="UTF-8" ?>
- <Context>
<Resource name="o10g" type="javax.sql.DataSource" password="tiger" driverClassName="oracle.jdbc.driver.OracleDriver" maxIdle="5" maxWait="5000" username="scott" url="jdbc:oracle:thin:@localhost:1521:test" maxActive="50" />
</Context>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0579e2958
2009-07-10 · TA获得超过2646个赞
知道大有可为答主
回答量:7805
采纳率:0%
帮助的人:4007万
展开全部
我知道
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式