Tomcat-EclipseLink-4002 SQLNestedException:无法为连接URL“null”创建类“”的JDBC驱动程序

Tomcat-EclipseLink-4002 SQLNestedException:无法为连接URL“null”创建类“”的JDBC驱动程序,tomcat,jpa,tomcat7,eclipselink,jpa-2.0,Tomcat,Jpa,Tomcat7,Eclipselink,Jpa 2.0,好吧,我已经断断续续地做了大约一个星期了。我在网上找到了很多信息,尝试了很多不同的方法,但是没有一种方法对我有帮助,所以请你。如有任何建议,我们将不胜感激 我想让EclipseLink在Tomcat上工作。我已经在Tomcat中实现了本地工作,但是当我部署到服务器时,会出现错误。我在本地和服务器上使用Tomcat7.0.55、EclipseLink 2.3.2和JPA2.0 我已将这些罐子添加到TOMCAT_HOME/lib中。我不相信所有这些都是必要的,所以请让我知道它们是否是必要的 db2j

好吧,我已经断断续续地做了大约一个星期了。我在网上找到了很多信息,尝试了很多不同的方法,但是没有一种方法对我有帮助,所以请你。如有任何建议,我们将不胜感激

我想让EclipseLink在Tomcat上工作。我已经在Tomcat中实现了本地工作,但是当我部署到服务器时,会出现错误。我在本地和服务器上使用Tomcat7.0.55、EclipseLink 2.3.2和JPA2.0

我已将这些罐子添加到TOMCAT_HOME/lib中。我不相信所有这些都是必要的,所以请让我知道它们是否是必要的

db2jcc.jar db2jcc_license_cu.jar 日食-2.3.2.jar javax.persistence-2.0.0.jar 这是我目前的代码

pom.xml

连接-使用jpa

但我得到了:

错误

根本原因

我从中得到的是Tomcat找不到我的context.xml。是这样吗


我知道还有一些文档将资源放在server.xml中,并将ResourceLink元素放在context.xml中。我已经试过了,但是我得到了完全相同的错误。

乍一看,我觉得一切都很好,但是你能试试这个dataSource=dataSource new InitialContext.lookupjava:comp/env/jdbc/MYDS;谢谢我做了更改,但也将数据源移到了服务器的context.xml中,以查看资源是否被读取。这在使用initialcontext时起作用,因此我认为问题在于,出于某种原因,Tomcat没有读取我的context.xml。我还没有用Eclipselink测试过。我的应用程序是按计划部署的,所以我会在部署时进行一些小的更改和测试。
<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>eclipselink</artifactId>
    <version>2.3.2</version>
    <exclusions>
        <exclusion>
            <artifactId>commonj.sdo</artifactId>
            <groupId>commonj.sdo</groupId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>javax.persistence</artifactId>
    <version>2.0.0</version>
</dependency>
<resource-ref>
    <description>MYDS connection</description>
    <res-ref-name>jdbc/MYDS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>
<Resource name="jdbc/MYDS"
    auth="Container"
    type="javax.sql.DataSource"
    username="username"
    password="password"
    driverClassName="com.ibm.db2.jcc.DB2Driver"
    url="jdbc:db2://<hostname>:<port>/MYDS"
    maxActive="15"
    maxIdle="3" />
<persistence-unit name="MYDS" transaction-type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <non-jta-data-source>java:/comp/env/jdbc/MFMFB302</non-jta-data-source>
    <!-- ================== File Mappings ================== -->
    <mapping-file>META-INF/orm/MYDS.xml</mapping-file>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>

    <!-- ================== Entities ================== -->
    <class>model.model1</class>
    <class>model.model2</class>

    <properties>
        <property name="eclipselink.weaving" value="false" />
        <property name="eclipselink.ddl-generation.output-mode" value="sql-script"/>
        <property name="eclipselink.logging.level" value="FINE"/>
        <property name="eclipselink.target-database" value="DB2"/>
    </properties>
</persistence-unit>
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource) envCtx.lookup("jdbc/MYDS");
Connection conn = ds.getConnection();
conn.close();
EntityManagerFactory emf = Persistence.createEntityManagerFactory( "MYDS" );
JpaEntityManager entityManager = (JpaEntityManager) emf.createEntityManager();
javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
Error Code: 0
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:517)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:294)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:272)
Caused by: java.lang.NullPointerException
    at sun.jdbc.odbc.JdbcOdbcDriver.getProtocol(JdbcOdbcDriver.java:524)
    at sun.jdbc.odbc.JdbcOdbcDriver.knownURL(JdbcOdbcDriver.java:493)
    at sun.jdbc.odbc.JdbcOdbcDriver.acceptsURL(JdbcOdbcDriver.java:307)
    at java.sql.DriverManager.getDriver(DriverManager.java:262)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)