まず第一に、私はすでにこの問題を探していて、いくつかの答えを見つけたと言わなければなりません。
JDK 1.7.0.10 を使用して Windows 2008 x64 で Tomcat 7 をサービスとして実行しています。
Windows 7 x86 の Tomcat 6.0.36 (サービスとしてインストールされていない) で正常に実行された JDBC 接続プールを使用しようとしています。構成は簡単でした:
1-. sqljdbc4.jar を %CATALINA_HOME%\lib ディレクトリにコピーします。
2-. %CATALINA_HOME%\webapps\APP_NAME\META-INF\context.xml を編集します。
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path="/APP_NAME">
<Resource name="jdbc/poolConexiones"
auth="Container"
driverclassname="com.microsoft.sqlserver.jdbc.SQLServerDriver"
maxactive="100"
maxidle="30"
maxwait="10000"
username="user"
password="pass"
type="javax.sql.DataSource"
url="jdbc:sqlserver://localhost:1433;databaseName=Name">
</Resource>
</Context>
3-. web.xml を編集します。
<resource-ref>
<res-ref-name>jdbc/poolConexiones</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
そして、それはうまくいきます!
しかし、同じアプリケーションを実行しようとしたとき
- a) サービスとしてインストールされた w2008 x64 および tomcat (v 6 および 7)
- b) サービスとしてインストールされた wXP x86 および tomcat (v 6 および 7)
同じ手順に従って、私は得ました:
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)
次に、さまざまなことを試しました。
サービス laucher で jvm のクラスパスを変更します。
Java クラスパス: C:\Program Files\Apache Software Foundation\Tomcat 7.0\lib\sqljdbc4.jar;C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\bootstrap.jar;C:\Program Files\Apache Software Foundation \Tomcat 7.0\bin\tomcat-juli.jar
WinXP では動作しますが、w2008 では動作しませんでした。
通常の Tomcat バージョン (サービスではない) を使用し、Catalina.bat を変更してクラスパスに sqljdbc4.jar を含めます。
if "%CLASSPATH%" == "" 空クラスパス セット "CLASSPATH=%CATALINA_HOME%\lib\sqljdbc4.jar;%CLASSPATH%;" に移動 :emptyClasspath set "CLASSPATH=%CATALINA_HOME%\lib\sqljdbc4.jar;%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"
"%CATALINA_TMPDIR%" == "" goto gotTmpdir set "CATALINA_TMPDIR=%CATALINA_BASE%\temp" :gotTmpdir でない場合
WinXP では動作しますが、w2008 では動作しませんでした
そのため、同じ手順を異なる順序で数回繰り返し、さまざまなバージョンの tomcat と Java を試した後、他に何をすべきかわかりません。
このアプリケーションは、w7 x86 および tomcat 6 から Netbeans 6.91 までこの構成で何も変更せずに実行され、Win XP x86 でクラスパスを編集して実行されることを覚えておいてください。
じゃあ何が問題なの?
私の悪い英語でごめんなさい。ありがとうございました。