一尘不染

无法为连接URL'null'创建类''的JDBC驱动程序:Tomcat和SQL Server JDBC驱动程序

tomcat

我已经尝试了几乎所有可以找到的一切,如果有人能够帮助我,我将永远感激不已(在我的时间里,我有更多的空闲时间)。

基本上,我在Tomcat
7.0中有一个错误(都是在Eclipse中运行并通过startup.bat运行时),该错误表明一旦动态Web应用程序开始访问数据,就会出现此错误:

Cannot create JDBC driver of class '' for connect URL 'null'
java.lang.NullPointerException
at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:507)
at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:476)
at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307)

我的tomcat \ lib目录中有sqljdbc4.jar文件。我还尝试将其放入我的WEB-INF / lib甚至JDK
lib目录中。我认为sqljdbc.jar不起作用,因为它是为比我的更老的JDK / JRE安装而设计的。

我听说context.xml和web.xml文件对于使其正常工作至关重要。

web.xml代码段:

<resource-ref>
<description>LBI DB Connection</description>
<res-ref-name>jdbc/LBIDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<resource-ref>
<description>OR DB Connection</description>
<res-ref-name>jdbc/ORDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>

context.xml

<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Resource name="jdbc/LBIDB" auth="Container"
type="javax.sql.DataSource" username="***" password="***"   driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
url="jdbc:sqlserver:localhost;DatabaseName=YYBackOffice;SelectMethod=cursor;"
maxActive="8" maxIdle="4"/>

<Resource name="jdbc/ORDB" auth="Container"
type="javax.sql.DataSource" username="***" password="***"   driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 
url="jdbc:sqlserver:localhost;DatabaseName=XXBackOffice;SelectMethod=cursor;"
maxActive="8" maxIdle="4"/>

最终,“上下文”选项卡确实有一个关闭选项卡。

请帮忙!如果您需要更多信息,请告诉我。另外,我不确定应该修改哪个context.xml,Tomcat目录中有2个,/ conf目录中有1个,webapps
/ appname / META-INF文件夹中有1个。对不起,如果听起来我有点菜鸟,那是因为我!

另外,我已经看到了context.xml的url =“
…”部分的许多不同示例,其中一些包括端口号。我已经在线尝试了一些方法,但是似乎没有任何效果(在线完全无济于事是我的确切数据环境,而且我认为这个应用程序在给定的时间查询两个不同的DB很有挑战性)。

有什么想法吗?


阅读 322

收藏
2020-06-16

共1个答案

一尘不染

  1. context.xml你的web应用程序的META-INF文件夹将优先于一个在/ conf目录,这是真的只是一个普通的默认值。

  2. 开源JTDS SQL Server驱动程序比Microsoft更好。除非有最重要的原因,否则请改用它。将其放置在tomcat / lib文件夹中的唯一原因是,如果在server.xml中声明数据库的GlobalNamingResource,否则可以将其放置在应用程序的/ lib文件夹中。

  3. JTDS的JDBC URL为: jdbc:jtds:sqlserver://hostname/databasename

  4. JTDS的连接驱动程序类为: net.sourceforge.jtds.jdbc.Driver

2020-06-16