Tomcat配置SQLServer数据连接池

来源:互联网 发布:视频压缩算法工程师 编辑:程序博客网 时间:2024/05/18 00:54
 

1)首先是server.xml文件,这个文件的位置相信大家都知道,注意我在host标签中加入了context标签的内容。你也可以做一全局的,不过我没试出来,如果高手用过全局的,麻烦把完整的实现发出来看看,

下面是server.xml中的全部内容,只改动了<Host></Host>,在其中加入了配置数据连接池的标签内容:

<?xml version='1.0' encoding='utf-8'?>
<Server>
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
  <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"/>
    <ResourceParams name="UserDatabase">
      <parameter>
        <name>factory</name>
        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
      </parameter>
      <parameter>
        <name>pathname</name>
        <value>conf/tomcat-users.xml</value>
      </parameter>
    </ResourceParams>
  </GlobalNamingResources>
  <Service name="Catalina">
    <Connector acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" port="8080" redirectPort="8443">
    </Connector>
    <Connector port="8009" protocol="AJP/1.3" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler" redirectPort="8443">
    </Connector>
    <Engine defaultHost="localhost" name="Catalina">
   
 <!--Host--> 
   <Host appBase="webapps" name="localhost">
      
 <Context path="/test" docBase="test" debug="0" reloadable="true" crossContext="true" >
 <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_log." suffix=".txt" timestamp="true"/>
<Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/test">
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://localhost;DatabaseName=mydata</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value>sa</value>
</parameter>
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
</ResourceParams>

</Context>


  </Host>
      <Logger className="org.apache.catalina.logger.FileLogger" prefix="catalina_log." suffix=".txt" timestamp="true"/>
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/>
    </Engine>
  </Service>


</Server>

2)(这一步你也可以尝试不用)在tomcat/conf/Catalina/localhost目录下建一xml文件,如test.xml基中test指的是我的工程名(应用名或说是部署到tomcat中的应用的名字“一至的“)加上这么一句

<ResourceLink global="jdbc/XX" name="jdbc/XX" type="javax.sql.DataSource"/>或下面这句.我用的是下面这句,

global指的是全局,可能没起什么作用

<ResourceLink  name="jdbc/test" type="javax.sql.DataSource"/>

这一步不做也能运行出来。

3)配置你自己应用(test)的web.xml
在最后加入:
<resource-ref>
<description>DataSource Connection Pool</description>
<res-ref-name>java:comp/env/jdbc/test</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

4)测试页面

<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.naming.Context"%>
<%@ page import="javax.sql.DataSource"%>
<%@ page import="javax.naming.InitialContext"%>
<%
try
{
Context initCtx=new InitialContext();
DataSource ds = (DataSource)initCtx.lookup("java:comp/env/jdbc/test");
Connection conn=ds.getConnection();
out.println("data from database:<br>");
Statement stmt=conn.createStatement();
ResultSet rs =stmt.executeQuery("select * from ClassOrder");
while(rs.next())
{
out.println(rs.getString(1));
out.println(rs.getString(2));

}
rs.close();
stmt.close();
}
catch(Exception e)
{
e.printStackTrace();
}
%>

就OK!了。

 

有一种简单的图形界面配置:

在IE中打开http://127.0.0.1:8080/admin,输入用户名和密码

选择Resource/Data Source/新建一个DataSource,配置如下:

①JNDI Name:jdbc/mysql   //设置连接池的JNDI名

②Data Source URL:jdbc:mysql://localhost:3306/forcon   //数据库连接字串,forcon为数据库名

③JDBC Driver Class:org.gjt.mm.mysql.Driver   //数据库连接类

④User Name:root //数据库连接时的用户名

⑤Password:**** //数据库连接时的密码

以下默认配置。

这样配置完后,/config/server.xml下的<resource>内容会自动添加上

要想在某个Web应用下用连接池,可在IE中打开http://127.0.0.1:8080/admin,输入用户名和密码,选择

Service/Host,在其中选择要用连接池的Web目录,在右边表中作相应配置就可。

这样完了之后,/conf/Catalina/localhost下会出现一个和Web应用同名的.xml文件,里面已自动配置好。

你所做的就是手动在Web下的WEB-INF中的web.xml中添加

<resource-ref>
<description>DataSource Connection Pool</description>
<res-ref-name>java:comp/env/jdbc/javaoa</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

就可以了,这样就省去了很多复杂的添这添那了。

原创粉丝点击