Tomcat8 加载错误 SQL Server Driver / SQL ServerXADataSource not found
Tomcat8 loading wrong SQL Server Driver / SQLServerXADataSource not found
我正在尝试使用 com.microsoft.sqlserver.jdbc.SQLServerXADataSource
in Tomcat8 设置连接池。虽然使用 com.microsoft.sqlserver.jdbc.SQLServerDriver
一切正常,但使用 SQLServerXADataSource
时,Tomcat 声明 No suitable driver found
.
我确定正确的驱动程序 jar 在 $CATALINA\lib
中,但是我不确定它是否正确加载,因为 com.microsoft.sqlserver.jdbc.SQLServerDriver
在 [=18] 中使用和不使用该驱动程序=].也许加载了一些我找不到的其他驱动程序。
目前在 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);
此配置应该有效。对相应的值进行必要的更改:
<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" />
似乎没有已知 方法在代码中执行此操作。但是,我设法使用
进行了设置
<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"
/>
我正在尝试使用 com.microsoft.sqlserver.jdbc.SQLServerXADataSource
in Tomcat8 设置连接池。虽然使用 com.microsoft.sqlserver.jdbc.SQLServerDriver
一切正常,但使用 SQLServerXADataSource
时,Tomcat 声明 No suitable driver found
.
我确定正确的驱动程序 jar 在 $CATALINA\lib
中,但是我不确定它是否正确加载,因为 com.microsoft.sqlserver.jdbc.SQLServerDriver
在 [=18] 中使用和不使用该驱动程序=].也许加载了一些我找不到的其他驱动程序。
目前在 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);
此配置应该有效。对相应的值进行必要的更改:
<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" />
似乎没有已知 方法在代码中执行此操作。但是,我设法使用
进行了设置<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"
/>