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

标签 java sql tomcat jdbc database-connection

我已经尝试了几乎所有我能找到的东西,如果有人能够帮助我,我将永远感激不尽(并且在我的时间里有更多的自由)。

基本上,我在 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>

上下文.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 文件夹中有一个,webapps/appname/META-INF 文件夹中有一个。抱歉,如果听起来我有点菜鸟,那是因为我是!

此外,我还看到了 context.xml 的 url="..."部分的许多不同示例,其中一些包括端口号。我已经在线尝试了几种方法,但似乎没有任何效果(在线没有任何帮助是我的确切数据环境,而且我认为这个应用程序在给定时间查询两个不同的数据库是具有挑战性的)。

想法?

最佳答案

  1. Web 应用程序 META-INF 文件夹中的 context.xml 将优先于/conf 目录中的文件,后者实际上只是一个通用的默认。

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

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

  4. JTDS 的连接驱动类是:net.sourceforge.jtds.jdbc.Driver

关于java - 无法为连接 URL '' : Tomcat & SQL Server JDBC driver 创建类 'null' 的 JDBC 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332276/

相关文章:

java - 如何在单元测试中忽略 @PreAuthorize ("isAuthenticated()") 注释?

java - Android 自定义 View 只调用 onDraw 一次

mysql - 更改 SQL 数据库中的 bool 值

php - 从SQL中提取数据,然后写入文本文件

java - 使用tomcat部署应用程序时出错

tomcat - maven t7mp tomcat 插件管理器应用程序

java - java中如何验证文件名

java - Glassfish V4 管理员密码

sql - 更新数据库中尚未存在于表中的多条记录

tomcat - 使用 Zabbix/Nagios 在 Tomcat 中进行应用程序级别监控