Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat8加载错误的SQL Server驱动程序/SQLServerXadasource未找到_Java_Sql Server_Jdbc_Tomcat8 - Fatal编程技术网

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

Java Tomcat8加载错误的SQL Server驱动程序/SQLServerXadasource未找到,java,sql-server,jdbc,tomcat8,Java,Sql Server,Jdbc,Tomcat8,我正在尝试使用Tomcat8中的com.microsoft.sqlserver.jdbc.SQLServerXADataSource设置连接池。虽然使用com.microsoft.sqlserver.jdbc.SQLServerDriver一切正常,但使用SQLServerXADataSource时,Tomcat声称未找到合适的驱动程序 我确信正确的驱动程序jar在$CATALINA\lib中,但是我不确定它是否正确加载,因为com.microsoft.sqlserver.jdbc.SQLSer

我正在尝试使用Tomcat8中的
com.microsoft.sqlserver.jdbc.SQLServerXADataSource
设置连接池。虽然使用
com.microsoft.sqlserver.jdbc.SQLServerDriver
一切正常,但使用
SQLServerXADataSource
时,Tomcat声称
未找到合适的驱动程序

我确信正确的驱动程序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);
//Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerXADataSource”);
Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
final ConnectionFactory ConnectionFactory=new driverManager连接工厂(connectURI,null);
最终PoolableConnectionFactory PoolableConnectionFactory=新PoolableConnectionFactory(connectionFactory,null);
最终GenericObjectPool connectionPool=新的GenericObjectPool(poolableConnectionFactory);
setPool(connectionPool);
返回新的PoolgDataSource(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.SQLServerDriver
在没有驱动程序的情况下仍能工作,那么您是否正在使用任何构建工具,例如maven或gradle?如果显示您的配置设置,这也会很有帮助。@zulq我很乐意提供任何有用的信息,您指的是哪种配置<代码>catalina.属性
?是的,我正在使用maven,是的,war中还包括驱动程序
sqljdbc4.jar
。但是如果Tomcat使用这个,它将能够找到
SQLServerXADataSource
,不是吗?我指的是您的
/META-INF/context.xml
,这是您应该定义连接的地方。下面的链接显示了一个示例:谢谢!但不幸的是,我正在寻找一个没有资源的解决方案