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

问题描述 投票:3回答:1

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

我使用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>

Z-。 Едитвеб.хмл:

<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以便在classpath中包含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%”==“”goto gotTmpdir设置“CATALINA_TMPDIR =%CATALINA_BASE%\ temp”:gotTmpdir

适用于WinXP,但它在w2008上无效

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

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

那有什么问题呢?

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

windows tomcat jdbc sql-server-2008-r2 jndi
1个回答
0
投票

另外需要注意的是,如果在数据库服务中运行了多个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> 
© www.soinside.com 2019 - 2024. All rights reserved.