【问题标题】:Configure SQL Server connection pool on Tomcat在 Tomcat 上配置 SQL Server 连接池
【发布时间】:2013-03-08 02:09:08
【问题描述】:

我一直在尝试为 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 的连接池?我到处搜索,尝试了所有我找到的东西,但没有任何效果。


提前致谢。

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

[edit-2] 问题似乎是Tomcat在他的lib文件夹中找不到驱动程序。我们很确定它在那里,但我们不知道如何确定。 sqljdbc4 和 jtds-1.3.0 都会发生这种情况。我们正在遵循我们可以找到的所有准则,但问题仍然存在。

【问题讨论】:

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


    【解决方案1】:

    我们发现了问题。

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

    应该是

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

    【讨论】:

      【解决方案2】:

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

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

      如果你无法使用 Squirrel 访问服务器,可能是你没有启用对服务器的 TCP/IP 访问,在这种情况下,请按照Enable remote connections for SQL Server Express 2012 接受的答案

      【讨论】:

      • 那肯定有效果!但是,我现在收到以下消息:2013 年 3 月 19 日上午 10:50:57 org.apache.naming.NamingContext 查找警告:意外异常解析参考 java.sql.SQLException at org.apache.tomcat.jdbc.pool .PooledConnection.connectUsingDriver(PooledConnection.java:254)
      • 我需要更多的堆栈跟踪行,你能编辑你的帖子,附上你得到的完整异常吗?
      • 我已将其添加到原帖中
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多