簡體   English   中英

無法為連接URL'null'創建類''的JDBC驅動程序:Tomcat和SQL Server JDBC驅動程序

[英]Cannot create JDBC driver of class '' for connect URL 'null' : Tomcat & SQL Server JDBC driver

我已經嘗試過我能找到的所有東西,如果有人能夠幫助我,我會永遠感激(並且在我的時間里更加自由)。

基本上,我在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選項卡最終會有一個結束選項卡。

請幫忙! 如果您需要更多信息,請告訴我。 另外,我不確定哪個context.xml應該被修改,Tomcat目錄中有2個,/ conf文件夾中有一個,webapps / appname / META-INF文件夾中有一個。 對不起,如果聽起來我有點像菜鳥,那是因為我!

另外,我已經看到了context.xml的url =“...”部分的許多不同示例,其中一些包括端口號。 我已經嘗試了幾個在線的東西,但似乎沒有任何工作(在網上沒有任何幫助是我確切的數據環境,我認為這個應用程序在給定時間查詢兩個不同的DB是具有挑戰性的)。

思考?

  1. Web應用程序的META-INF文件夾中的context.xml將優先於/ conf目錄中的context.xml ,這實際上只是一般默認設置。

  2. 開源JTDS SQL Server驅動程序比微軟更好。 除非有一個最重要的原因,否則請使用它。 將它放在tomcat / lib文件夾中的唯一原因是,如果要在server.xml中為數據庫聲明GlobalNamingResource ,則可以將其放在應用程序的/ lib文件夾中。

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

  4. JTDS的連接驅動程序類是: net.sourceforge.jtds.jdbc.Driver

在tomcat 6.0.36中,它恰恰相反:

CATALINA_HOME/conf/Catalina/your_host/context.xml

將采取從一個的優先權

YourApplication/WebContent/META-INF/

將數據后面的數據放入Catalina/your_host的Context-Tag后,它適用於我的情況:

<WatchedResource>WEB-INF/web.xml</WatchedResource>
  <Resource name="jdbc/your_db" auth="Container" type="javax.sql.DataSource"
      maxActive="50" maxIdle="30" maxWait="10000"
      username="your_usr" password="your_pwd" 
      driverClassName="com.mysql.jdbc.Driver"
      url="jdbc:mysql://your_host:3306/your_db"/>

請參閱http://tomcat.apache.org/tomcat-6.0-doc/config/context.html上的 Tomcat文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM