【发布时间】:2012-12-28 09:52:45
【问题描述】:
首先我必须说我已经寻找过这个问题并且我找到了几个答案,没有一个对我有用。
我已将 Tomcat 7 作为服务在带有 JDK 1.7.0.10 的 Windows 2008 x64 上运行。
我正在尝试使用 JDBC 连接池,它已在 Windows 7 x86 上的 Tomcat 6.0.36(未作为服务安装)中成功运行。配置很简单:
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)
然后我尝试了不同的方法:
-
在service laucher上修改jvm的classpath:
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:
如果 "%CLASSPATH%" == "" 转到 emptyClasspath 设置“CLASSPATH=%CATALINA_HOME%\lib\sqljdbc4.jar;%CLASSPATH%;” :emptyClasspath 设置“CLASSPATH=%CATALINA_HOME%\lib\sqljdbc4.jar;%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar”
如果不是 "%CATALINA_TMPDIR%" == "" 转到 gotTmpdir 设置“CATALINA_TMPDIR=%CATALINA_BASE%\temp” :gotTmpdir
适用于 WinXP,但不适用于 w2008
所以,在以不同的顺序重复多次相同的步骤并尝试不同版本的 tomcat 和 Java 之后,我不知道还能做什么。
请记住,此应用程序在 w7 x86 和 tomcat 6 到 Netbeans 6.91 中使用此配置运行,无需任何修改,它在 Win XP x86 上运行,编辑类路径。
那有什么问题呢?
对不起,我的英语不好。谢谢。
【问题讨论】:
-
我卸载了tomcat 7,下载了ZIP版本,将其解压缩到不同的文件夹(避免程序文件),创建了launcher.bat(将CLASS_PATH设置为指向“...\sqljdbc4. jar") 并且,在重复库配置之后......它工作了!
-
请参考下面的链接,它对我有用stackoverflow.com/questions/2497725/…
-
据我所知,这个问题是XML配置区分大小写的问题之一。它应该是
driverClassName(和maxActive、maxIdle和maxWait)。另见tomcat.apache.org/tomcat-7.0-doc/…
标签: windows tomcat jdbc sql-server-2008-r2 jndi