在Weblogic 10.3.6上使用Hibernate 4.3.7.Final和JPA 2.1

时间:2015-01-12 05:11:28

标签: java hibernate java-ee jpa

我正在尝试使用最新版本的Hibernate&在weblogic 10.3.6上获取JPA并获取java.lang.ClassCastException:org.hibernate.jpa.HibernatePersistenceProvider无法转换为javax.persistence.spi.PersistenceProvider。

以下是我已经完成的事情。

  1. 创建新版本的Hibernate Library

  2. 升级我的JodaTime库

  3. 添加JPA&服务器的持久升级接受JPA 2.0(虽然我们将使用我们自己的库)。 设置PRE_CLASSPATH =%BEA_HOME%\ modules \ javax.persistence_1.0.0.0_2-0-0.jar;%BEA_HOME%\ modules \ com.oracle.jpa2support_1.0.0.0_2-1.jar;%PRE_CLASSPATH%

  4. 更改了persistance.xml

  5. Persistance.xml

     <?xml version="1.0" encoding="UTF-8"?>
     <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns
     /persistence/persistence_1_0.xsd">
        <persistence-unit name="BagTagAgentEJB" transaction-type="RESOURCE_LOCAL">
            <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
            <jta-data-source>jdbc/GuestSelfService</jta-data-source>
            <class>hibernate.DataAccessObject.bla</class>
            <properties>
                <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect" > />
                <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.WeblogicTransactionManagerLookup" />
            </properties>
     </persistence-unit>
     </persistence>    
    

    WebLogic的application.xml中

      <wls:prefer-application-packages>
        <wls:package-name>antlr.*</wls:package-name>
        <wls:package-name>javassist.*</wls:package-name>
        <wls:package-name>org.dom4j.*</wls:package-name>
        <wls:package-name>org.apache.commons.collections.*</wls:package-name>
        <wls:package-name>org.apache.log4j.*</wls:package-name>
        <wls:package-name>org.hibernate.*</wls:package-name>
        <wls:package-name>javax.persistence.*</wls:package-name>
        <wls:package-name>org.joda.*</wls:package-name>
        <wls:package-name>org.slf4j.*</wls:package-name>
      </wls:prefer-application-packages>
    

    我在部署时遇到以下错误     &lt; 12/01/2015 2:49:01 PM EST&gt;

    at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:469)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:199)
    at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:517)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:159)
    at weblogic.application.internal.flow.DeploymentCallbackFlow.prepare(DeploymentCallbackFlow.java:45)
    at weblogic.application.internal.BaseDeployment$1.next(BaseDeployment.java:648)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
    at weblogic.application.internal.BaseDeployment.prepare(BaseDeployment.java:191)
    at weblogic.application.internal.EarDeployment.prepare(EarDeployment.java:59)
    at weblogic.application.internal.DeploymentStateChecker.prepare(DeploymentStateChecker.java:154)
    at weblogic.deploy.internal.targetserver.AppContainerInvoker.prepare(AppContainerInvoker.java:60)
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.createAndPrepareContainer(ActivateOperation.java:208)
    at weblogic.deploy.internal.targetserver.operations.ActivateOperation.doPrepare(ActivateOperation.java:98)
    at weblogic.deploy.internal.targetserver.operations.AbstractOperation.prepare(AbstractOperation.java:217)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handleDeploymentPrepare(DeploymentManager.java:747)
    at weblogic.deploy.internal.targetserver.DeploymentManager.prepareDeploymentList(DeploymentManager.java:1216)
    at weblogic.deploy.internal.targetserver.DeploymentManager.handlePrepare(DeploymentManager.java:250)
    at weblogic.deploy.internal.targetserver.DeploymentServiceDispatcher.prepare(DeploymentServiceDispatcher.java:159)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.doPrepareCallback(DeploymentReceiverCallbackDeliverer.java:171)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer.access$000(DeploymentReceiverCallbackDeliverer.java:13)
    at weblogic.deploy.service.internal.targetserver.DeploymentReceiverCallbackDeliverer$1.run(DeploymentReceiverCallbackDeliverer.java:46)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
    Caused by: weblogic.deployment.EnvironmentException: Error processing persistence unit BagTagAgentEJB of module BagTagAgentEJB-1.0.0-SNAPSHOT.jar: Error instantiating the Persistence Provider class org.hibernate.jpa.HibernatePersistenceProvider of the PersistenceUnit BagTagAgentEJB: java.lang.ClassCastException: org.hibernate.jpa.HibernatePersistenceProvider cannot be cast to javax.persistence.spi.PersistenceProvider
    
    at weblogic.deployment.BasePersistenceUnitInfoImpl.getPersistenceProvider(BasePersistenceUnitInfoImpl.java:375)
    at weblogic.deployment.BasePersistenceUnitInfoImpl.initializeEntityManagerFactory(BasePersistenceUnitInfoImpl.java:393)
    at weblogic.deployment.BasePersistenceUnitInfoImpl.initializeEntityManagerFactory(BasePersistenceUnitInfoImpl.java:386)
    at weblogic.deployment.BasePersistenceUnitInfoImpl.<init>(BasePersistenceUnitInfoImpl.java:158)
    at weblogic.deployment.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:46)
    at weblogic.deployment.AbstractPersistenceUnitRegistry.storeDescriptors(AbstractPersistenceUnitRegistry.java:349)
    at weblogic.deployment.AbstractPersistenceUnitRegistry.loadPersistenceDescriptor(AbstractPersistenceUnitRegistry.java:263)
    at weblogic.deployment.ModulePersistenceUnitRegistry.<init>(ModulePersistenceUnitRegistry.java:69)
    at weblogic.ejb.container.deployer.EJBModule.setupPersistenceUnitRegistry(EJBModule.java:223)
    at weblogic.ejb.container.deployer.EJBModule$1.execute(EJBModule.java:324)
    at weblogic.deployment.PersistenceUnitRegistryInitializer.setupPersistenceUnitRegistries(PersistenceUnitRegistryInitializer.java:62)
    at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:393)
    

    添加服务器类路径:

    WLS Start Mode=Development
    .
    CLASSPATH=C:\dev\app\Oracle\OSB_MI~1\ORACLE~1\modules\oracle.jdbc_11.1.1\ojdbc6dms.jar;
    C:\dev\app\Oracle\OSB_Middleware\modules\javax.persistence_1.0.0.0_2-0-0.jar;C:\dev\app
    \Oracle\OSB_Middleware\modules\com.oracle.jpa2support_1.0.0.0_2-0.jar;C:\dev\app\Oracle
    \OSB_MI~1\ORACLE~2\lib\osb-server-modules-ref.jar;C:\dev\app\Oracle\OSB_MI~1
    \patch_wls1036\profiles\default\sys_manifest_classpath\weblogic_patch.jar;C:\dev\app
    \Oracle\OSB_MI~1\patch_oepe180\profiles\default\sys_manifest_classpath
    \weblogic_patch.jar;C:\dev\app\Oracle\OSB_MI~1\patch_ocp371\profiles\default
    \sys_manifest_classpath\weblogic_patch.jar;C:\dev\app\Oracle\OSB_MI~1\patch_adfr1111
    \profiles\default\sys_manifest_classpath\weblogic_patch.jar;C:\dev\app\Oracle\OSB_MI~1
    \JDK160~1\lib\tools.jar;C:\dev\app\Oracle\OSB_MI~1\WLSERV~1.3\server
    \lib\weblogic_sp.jar;C:\dev\app\Oracle\OSB_MI~1\WLSERV~1.3\server\lib\weblogic.jar;C:
    \dev\app\Oracle\OSB_MI~1\modules\features\weblogic.server.modules_10.3.6.0.jar;C:
    \dev\app\Oracle\OSB_MI~1\WLSERV~1.3\server\lib\webservices.jar;C:\dev\app\Oracle
    \OSB_MI~1\modules\ORGAPA~1.1/lib/ant-all.jar;C:\dev\app\Oracle\OSB_MI~1\modules
    \NETSFA~1.0_1/lib/ant-contrib.jar;C:\dev\app\Oracle\OSB_MI~1\ORACLE~1\soa\modules
    \commons-cli-1.1.jar;C:\dev\app\Oracle\OSB_MI~1\ORACLE~1\soa\modules
    \oracle.soa.mgmt_11.1.1\soa-infra-mgmt.jar;C:\dev\app\Oracle\OSB_Middleware\Oracle_OSB1
    \soa\modules\oracle.soa.common.adapters_11.1.1\oracle.soa.common.adapters.jar;C:
    \dev\app\Oracle\OSB_MI~1\ORACLE~1\modules\oracle.jrf_11.1.1\jrf.jar;C:\dev\app\Oracle
    \OSB_MI~1\ORACLE~2\lib\version.jar;C:\dev\app\Oracle\OSB_MI~1\ORACLE~2\lib\alsb.jar;C:
    \dev\app\Oracle\OSB_MI~1\ORACLE~2\3rdparty\lib\j2ssh-ant.jar;C:\dev\app\Oracle\OSB_MI~1
    \ORACLE~2\3rdparty\lib\j2ssh-common.jar;C:\dev\app\Oracle\OSB_MI~1\ORACLE~2\3rdparty
    \lib\j2ssh-core.jar;C:\dev\app\Oracle\OSB_MI~1\ORACLE~2\3rdparty\lib\j2ssh-
    dameon.jar;C:\dev\app\Oracle\OSB_MI~1\ORACLE~2\3rdparty\classes;C:\dev\app\Oracle
    \OSB_MI~1\ORACLE~2\lib\external\log4j_1.2.8.jar;C:\dev\app\Oracle\OSB_MI~1\USER_P~1
    \domains\OSB_DO~1\config\osb;C:\dev\app\Oracle\OSB_MI~1\WLSERV~1.3\common\derby
    \lib\derbyclient.jar;C:\dev\app\Oracle\OSB_MI~1\WLSERV~1.3\server\lib\xqrl.jar;C:
    \dev\app\Oracle\OSB_Middleware\wlserver_10.3\server\ext\postgresql-9.2-1002.jdbc4.jar
    
    .
    PATH=C:\dev\app\Oracle\OSB_MI~1\patch_wls1036\profiles\default\native;C:\dev\app\Oracle
    \OSB_MI~1\patch_oepe180\profiles\default\native;C:\dev\app\Oracle\OSB_MI~1\patch_ocp371
    \profiles\default\native;C:\dev\app\Oracle\OSB_MI~1\patch_adfr1111\profiles\default
    \native;C:\dev\app\Oracle\OSB_MI~1\WLSERV~1.3\server\native\win\32;C:\dev\app\Oracle
    \OSB_MI~1\WLSERV~1.3\server\bin;C:\dev\app\Oracle\OSB_MI~1\modules\ORGAPA~1.1\bin;C:
    \dev\app\Oracle\OSB_MI~1\JDK160~1\jre\bin;C:\dev\app\Oracle\OSB_MI~1\JDK160~1\bin;C:
    \oraclexe\app\oracle\product\10.2.0\server\bin;C:\Windows\system32;C:\Windows;C:
    \Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program 
    Files\Java\jdk1.6.0_24\bin;C:\maven\maven-2.2.1\bin;C:\Program Files\SlikSvn\bin;C:
    \Program Files\TortoiseSVN\bin;C:\cygwin64\bin;C:\HashiCorp\Vagrant\bin;C:\dev\apps
    \mongodb\mongodb-win32-x86_64-2.4.5\bin;C:\dev\apps\python\Python27;C:\dev\apps\python
    \Python27\Scripts;C:\dev\apps\jython\jython2.7b1;C:\dev\apps\jython\jython2.7b1\bin;C:
    \Program Files (x86)\Apache Software Foundation\Ant\apache-ant-1.9.4\bin;.;C:\dev\app
    \Oracle\OSB_MI~1\WLSERV~1.3\server\native\win\32\oci920_8
    

1 个答案:

答案 0 :(得分:1)

编辑步骤3,更新commEnv.cmd文件以使用jpa 2.1而不是jpa2.1,它对我有效。

这就是我的看法

set PRE_CLASSPATH=%PRE_CLASSPATH%;%MW_HOME%\modules\com.oracle.jpa2support_1.0.0.0_2-1.jar;%MW_HOME%\modules\javax.persistence_1.1.0.0_2-0.jar
相关问题