繁体   English   中英

Window 2008 Tomcat 7 MS SQL Server 2008R2 - 无法识别 JNDI JDBC 驱动程序

[英]Window 2008 Tomcat 7 MS SQL Server 2008R2 - JNDI JDBC Driver not recognized

首先,我必须说我已经找到了这个问题,并且找到了几个答案,但没有一个对我有用。

我已经使用 JDK 1.7.0.10 在 Windows 2008 x64 上作为服务运行 Tomcat 7。

我正在尝试使用 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:

    if "%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%" == "" 转到 gotTmpdir 设置 "CATALINA_TMPDIR=%CATALINA_BASE%\\temp" :gotTmpdir

适用于 WinXP,但不适用于 w2008

所以,在以不同的顺序重复多次相同的步骤并尝试不同版本的 tomcat 和 Java 之后,我不知道还能做什么

请记住,此应用程序在 w7 x86 和 tomcat 6 中通过 Netbeans 6.91 使用此配置运行,没有任何修改,并且它在 Win XP x86 上运行编辑类路径。

那有什么问题呢?

对不起,我的英语不好。 谢谢你。

另外要注意的是,如果在数据库服务中运行多个 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> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM