首先我必须说,我已经find了这个问题,我find了几个答案,没有为我工作。
Tomcat 7在JDK 1.7.0.10的Windows 2008 x64上作为服务运行。
我正在尝试使用JDBC连接池,我已经在Windows 7 x86上成功运行Tomcat 6.0.36(不作为服务安装)。 configuration很简单:
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>
它工作正常!
但是,当我试图运行相同的应用程序
按照相同的步骤 ,我得到了:
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)
然后我尝试了不同的东西:
在服务器上修改jvm的类path:
Java类path: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为了在类path中包含sqljdbc4.jar:
如果“%CLASSPATH%”==“”goto emptyClasspath set“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编辑类path。
那么问题是什么?
对不起,我的英语不好。 谢谢。
另外需要注意的是,如果在数据库服务中运行了多个SQLserver实例,则需要通过在context.xml中提供instanceName属性来限定要连接的实例 。 在Tomcat 6中,context.xml位于CATALINA_HOME / conf文件夹中。
<?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;instanceName=myInstance;databaseName=Name"> </Resource> </Context>