我用tomcat 6.0 配置sqlserver2000 数据库的连接池
项目文件地址:D:\workspace\news
数据库名称是:news ,用户名:sa ,密码:sa 配置tomcat6.0的server.xml文件,地址为
C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\server.xml 配置方法是:在<host></host>标签之间加入 <Context path="/news" docBase="D:\workspace\news" reloadable="true" crossContext="true"> <Resource name="jdbc/news"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=news"
username="sa"
password="sa"
maxIdle="30"
maxWait="10000"
maxActive="100"/>
</Context> 配置web-inf文件下的web.xml文件
具体方法如下:
在<web-app></web-app>标签之间加入
<resource-ref>
<res-ref-name>jdbc/news</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> 程序如下:
public void getConnPool(){
try{
if (Connected){
throw new SQLException("数据库已经连接,无需重连!");
}
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
//获取连接池对象 DataSource ds = (DataSource)envCtx.lookup("jdbc/news"); conn = ds.getConnection();
Connected = true;
showConnNum();
}catch(NamingException e){System.out.println("从数据池取得数据库连接时出错;\r\n错误为:"+e);}
catch(SQLException e){System.out.println("从数据池取得数据库连接时出错;\r\n错误为:"+e);}
} 在执行到Context envCtx = (Context) initCtx.lookup("java:comp/env");这一句后就报异常了,异常的具体内容是:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
项目文件地址:D:\workspace\news
数据库名称是:news ,用户名:sa ,密码:sa 配置tomcat6.0的server.xml文件,地址为
C:\Program Files\Apache Software Foundation\Tomcat 6.0\conf\server.xml 配置方法是:在<host></host>标签之间加入 <Context path="/news" docBase="D:\workspace\news" reloadable="true" crossContext="true"> <Resource name="jdbc/news"
auth="Container"
type="javax.sql.DataSource"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;databasename=news"
username="sa"
password="sa"
maxIdle="30"
maxWait="10000"
maxActive="100"/>
</Context> 配置web-inf文件下的web.xml文件
具体方法如下:
在<web-app></web-app>标签之间加入
<resource-ref>
<res-ref-name>jdbc/news</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> 程序如下:
public void getConnPool(){
try{
if (Connected){
throw new SQLException("数据库已经连接,无需重连!");
}
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
//获取连接池对象 DataSource ds = (DataSource)envCtx.lookup("jdbc/news"); conn = ds.getConnection();
Connected = true;
showConnNum();
}catch(NamingException e){System.out.println("从数据池取得数据库连接时出错;\r\n错误为:"+e);}
catch(SQLException e){System.out.println("从数据池取得数据库连接时出错;\r\n错误为:"+e);}
} 在执行到Context envCtx = (Context) initCtx.lookup("java:comp/env");这一句后就报异常了,异常的具体内容是:
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
我加载的包如下:
msbase.jar
mssqlserver.jar
msutil.jar
jtds.jar
commons-collections.jar
commons-dbcp.jar
commons-pool.jar 我想了一切我能想到的方法,问题依然没有解决,希望高手给点意见
另外我可以访问sqlserver数据库的1433端口 按照楼上的方法问题依然存在
像jboss就得在classpath路径下加上一个jndi.properties文件,
内容为:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost 现在报的错就是没用给InitialContext类传环境参数
一个网友给出以上解释,但是没有给出具体解决方法
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Listener className="org.apache.catalina.core.AprLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/>
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
<GlobalNamingResources>
<Environment
name="simpleValue"
type="java.lang.Integer"
value="30"/>
<Resource
auth="Container"
description="User database that can be updated and saved"
name="UserDatabase"
type="org.apache.catalina.UserDatabase"
pathname="conf/tomcat-users.xml"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"/>
<Resource
name="Test"
type="javax.sql.DataSource"
password="root"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/jspdev"
maxActive="4"/>
<Resource
name="jdbc/jspdev"
type="javax.sql.DataSource"
password="bn"
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="2"
maxWait="5000"
username="bn"
url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev"
maxActive="4"/>
</GlobalNamingResources>
Java代码
Tomcat6.0连接池配置
1.配置tomcat下的conf下的context.xml文件,在之间添加连接池配置:
<Resource name="jdbc/oracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.driver.OracleDriver "
url=" jdbc:oracle:thin:@host:port:databse"
username=" user "
password="password"
maxActive="100"
maxIdle="30"
maxWait="10000" />
2.配置你的应用下的web.xml中的之间加入:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/oracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
3.把连接数据库的第三方驱动放到common/lib下面就ok了
4.测试程序我就不写了
Tomcat5.5x连接池配置
方式一、全局数据库连接池
1、通过管理界面配置连接池,或者直接在tomcat\conf\server.xml的GlobalNamingResources中增加
<Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
2、在tomcat\webapps\myapp\META-INF\context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
这样就可以了。
方式二、全局数据库连接池
1、同上
2、在tomcat\conf\context.xml的Context中增加:
<ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/>
方式三、局部数据库连接池
只需在tomcat\webapps\myapps\META-INF\context.xml的Context中增加:
<Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/>
参数说明:
driveClassName:JDBC驱动类的完整的名称;
maxActive:同时能够从连接池中被分配的可用实例的最大数;
maxIdle:可以同时闲置在连接池中的连接的最大数;
maxWait:最大超时时间,以毫秒计;
password:用户密码;
url:到JDBC的URL连接;
user:用户名称;
validationQuery:用来查询池中空闲的连接。
以上三种方式在tomcat 5.5.4下都可以。另外,sql server的jdbc driver是从微软网站上下载的sql server jdbc (sp3)。