Tomcat8加载错误的SQL Server驱动程序/ SQLServerXADataSource未找到

时间:2015-07-01 08:56:01

标签: java sql-server jdbc tomcat8

我正在尝试在Tomcat8中使用com.microsoft.sqlserver.jdbc.SQLServerXADataSource建立连接池。虽然使用com.microsoft.sqlserver.jdbc.SQLServerDriver一切正常,但在使用SQLServerXADataSource时,Tomcat声称No suitable driver found

我确定正确的驱动程序jar位于$CATALINA\lib,但我不确定它是否已正确加载,因为com.microsoft.sqlserver.jdbc.SQLServerDriver正在lib中使用和不使用该驱动程序。也许还有其他一些我无法找到的驱动程序。

到目前为止,Windows和OS X上的类似问题......

有谁知道如何解决这个问题?

更新:我在代码中设置我的数据源,如下所示:

//Class.forName("com.microsoft.sqlserver.jdbc.SQLServerXADataSource");
  Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
  final ConnectionFactory                     connectionFactory         = new DriverManagerConnectionFactory(connectURI, null);
  final PoolableConnectionFactory             poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, null);
  final GenericObjectPool<PoolableConnection> connectionPool            = new GenericObjectPool<>(poolableConnectionFactory);
  poolableConnectionFactory.setPool(connectionPool);
  return new PoolingDataSource<>(connectionPool);

2 个答案:

答案 0 :(得分:1)

此配置应该有效。对相应的值进行必要的更改:

<Resource name="jdbc/mssql" 
              auth="Container"
              type="com.microsoft.sqlserver.jdbc.SQLServerXADataSource"
              factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
              integratedSecurity="false"
              serverName="127.0.0.1"
              databaseName="yourDbName"
              portNumber="1433"
              user="username"
              password="pwd" />

答案 1 :(得分:0)

似乎没有已知的方法在代码中执行此操作。但是,我设法使用

进行设置
<Resource name="jdbc/mssql"
          auth="Container"
          type="javax.sql.XADataSource"
          driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
          username="XXX"
          password="XXX"
          url="JDCB Connection String"
          factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
        />