在Tomcat上配置SQL Server连接池

时间:2013-03-19 11:56:36

标签: java sql-server tomcat tomcat7 connection-pooling

我一直在尝试为SQL Server 2012数据库配置连接池。我目前已经配置并运行了Informix和Oracle池,只有SQL Server让我头疼。这就是我在Context.xml上的资源到目前为止的样子:

<Resource name="jdbc/sqlserv"
    auth="Container"
    factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
    driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    type="javax.sql.DataSource"
    maxActive="50"
    maxIdle="10"
    maxWait="15000"
    username="username"
    password="password"
    url="jdbc:sqlserver://127.0.0.1:1433;databaseName=SQLDB;"
    removeAbandoned="true"
    removeAbandonedTimeout="30"
    logAbandoned="true" /> 

当然,那是使用sqljdbc4驱动程序。我们已经尝试将jtds-1.3.0与driverClass="net.sourceforge.jtds.jdbc.Driver"一起使用,但是没有去。所有资源引用也正在正确配置。每当我尝试使用该资源创建新连接时,它都会失败 为了便于比较,以下是我们的Informix和Oracle资源的样子:

<Resource name="jdbc/infmx"
    auth="Container"
    type="javax.sql.DataSource"
    factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
    maxActive="50"
    maxIdle="10"
    maxWait="15000"
    username="username"
    password="password"
    driverClassName="com.informix.jdbc.IfxDriver"
    url="jdbc:informix-sqli://localhost:30091/infmx:informixserver=ol_infmx_soc"
    removeAbandoned="true"
    removeAbandonedTimeout="30"
    logAbandoned="true"/>

<Resource name="jdbc/orcl"
    auth="Container"
    type="oracle.jdbc.pool.OracleDataSource"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    factory="oracle.jdbc.pool.OracleDataSourceFactory"
    url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
    user="username"
    password="password"
    maxActive="50"
    maxIdle="10"
    maxWait="15000" /> 

所以我的问题是:如何在我的tomcat上下文中为SQL Server 2012正确配置连接池?我搜索过高低,尝试了我发现的一切,但没有任何效果。


提前致谢。

[edit] 这是堆栈跟踪:http://pastebin.com/w3rZSERs

[edit-2] 似乎问题是Tomcat无法在他的lib文件夹中找到驱动程序。我们很确定它在那里,但我们不知道这一点。 sqljdbc4和jtds-1.3.0都会发生这种情况。我们遵循我们可以找到的每个指南,但问题仍然存在。

2 个答案:

答案 0 :(得分:10)

我们发现了问题。

driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver"

应该是

driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"

答案 1 :(得分:1)

在我看来,java端配置正确。

您可以使用其他JDBC连接(例如SquirrelSQL或类似软件)访问服务器吗?

如果您无法使用Squirrel访问服务器,可能您未启用对服务器的TCP / IP访问,在这种情况下,请遵循Enable remote connections for SQL Server Express 2012

的接受答案