草庐IT

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

coder 2024-06-07 原文

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

我将 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)

然后我尝试了不同的东西:

  • 修改 jvm 在 service laucher 上的类路径:

    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 软件基金会\Tomcat 7.0\bin\tomcat-juli.jar

适用于 WinXP,但不适用于 w2008。

  • 使用常规 Tomcat 版本(不是服务),修改 Catalina.bat 以便在类路径中包含 sqljdbc4.jar:

    if "%CLASSPATH%"== ""goto emptyClasspath 设置“CLASSPATH=%CATALINA_HOME%\lib\sqljdbc4.jar;%CLASSPATH%;” :空类路径 设置“CLASSPATH=%CATALINA_HOME%\lib\sqljdbc4.jar;%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar”

    如果不是 "%CATALINA_TMPDIR%"== ""goto gotTmpdir 设置“CATALINA_TMPDIR=%CATALINA_BASE%\temp” :gotTmpdir

在 WinXP 上工作,但在 w2008 上不工作

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

请记住,此应用程序通过 NetBeans 6.91 在 w7 x86 和 tomcat 6 中使用此配置运行,无需任何修改,并且它在编辑类路径的 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> 

关于windows - Window 2008 Tomcat 7 MS SQL Server 2008R2 - 无法识别 JNDI JDBC 驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318423/

有关windows - Window 2008 Tomcat 7 MS SQL Server 2008R2 - 无法识别 JNDI JDBC 驱动程序的更多相关文章

随机推荐