2

我正在尝试使用以下版本将我的应用程序和 Web 服务部署到 weblogic:

  • 网络逻辑 10.3.5
  • 休眠 4.1.1
  • 休眠 JPA API 2.0
  • EJB 2.0
  • 爪哇 6

当我调用我的网络服务时,我得到了错误

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns2:Fault xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://www.w3.org/2003/05/soap-envelope">
         <faultcode>ns2:Server</faultcode>
         <faultstring>javax/persistence/OneToMany.orphanRemoval()Z</faultstring>
        <detail>
           <ns2:exception class="java.lang.NoSuchMethodError" note="To disable this feature, set com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace system property to false" xmlns:ns2="http://jax-ws.dev.java.net/">
               <message>javax/persistence/OneToMany.orphanRemoval()Z</message>
               <ns2:stackTrace>
                  <ns2:frame class="org.hibernate.cfg.AnnotationBinder" file="AnnotationBinder.java" line="1868" method="processElementAnnotations"/>
                  <ns2:frame class="org.hibernate.cfg.AnnotationBinder" file="AnnotationBinder.java" line="768" method="processIdPropertiesIfNotAlready"/>
...

我已经检查过,没有包含其他持久性 api jar。

我的外部 jar 列表是:

  • ant-jakarta-oro-1.6.jar
  • antlr-2.7.2.jar
  • aspectjrt-1.5.3.jar
  • cactus.core.framework.uberjar.javaEE.14-1.8.1.jar
  • cactus.integration.maven2-1.8.1.jar
  • commons-beanutils-1.8.0.jar
  • commons-chain-1.2.jar
  • commons-codec-1.3.jar
  • commons-collections-3.2.1.jar
  • commons-digester-1.8.jar
  • commons-fileupload-1.1.1.jar
  • commons-httpclient-2.0-rc2.jar
  • commons-lang3-3.0.1.jar
  • commons-logging-1.1.1.jar
  • commons-validator-1.3.1.jar
  • dom4j-1.6.1.jar
  • generic-web-service-schema-4.0.jar
  • hibernate-commons-annotations-4.0.1.Final.jar
  • hibernate-core-4.1.1.Final.jar
  • hibernate-jpa-2.0-api-1.0.1.Final.jar
  • httpunit-1.6.jar
  • javassist-3.15.0-GA.jar
  • jboss-logging-3.1.0.GA.jar
  • jboss-transaction-api_1.1_spec-1.0.0.Final.jar
  • js-1.5R4.1.jar
  • jstl-1.0.2.jar
  • jtidy-4aug2000r7-dev.jar
  • junit-3.8.2.jar
  • nekohtml-1.9.6.jar
  • oracle.webservices.standalone.client-11.1.1.jar
  • oro-2.0.8.jar
  • 标准 1.0.6.jar
  • struts-core-1.3.10.jar
  • struts-el-1.3.10.jar
  • struts-taglib-1.3.10.jar
  • struts-tiles-1.3.10.jar
  • weblogic-webservices-api-1.1.0.0.jar
  • xercesImpl-2.8.1.jar
  • xml-apis-1.3.03.jar
  • xmlParserAPIs-2.2.1.jar

我已经检查了这些,Hibernate JPA 是唯一具有 OneToMany 类的。我知道问题是 JPA 1.0 和 JPA 2.0 之间的冲突,所以我只想知道是否有解决冲突的方法。

谢谢

4

2 回答 2

4

WebLogic 10.3.5可以支持 JPA 2,但只有在应用了本页所述的补丁之后:(至少,这是让它为我工作的方式。)

它归结为编辑和添加setDomainEnv.cmd环境变量。javax.persistence_1.0.0.0_2-0-0.jarcom.oracle.jpa2support_1.0.0.0_2-0.jarPRE_CLASSPATH

对于我的 Windows XP WebLogic 安装,我添加了这些行:

REM Add JARs for JPA 2.0 at the front of the class path.
set WLS_MODULES=%WL_HOME%\..\modules
set PRE_CLASSPATH=%WLS_MODULES%\javax.persistence_1.0.0.0_2-0-0.jar;%WLS_MODULES%\com.oracle.jpa2support_1.0.0.0_2-0.jar

祝你好运,
兰迪

于 2012-04-27T19:23:12.450 回答
1

你必须使用 Hibernate JPA API 2.0 吗?

WebLogic doc中所述,WebLogic 10.3.5 似乎大致只支持一个 JPA 2.0 提供程序,称为TopLink

也许你可以hibernate-jpa-2.0-api-1.0.1.Final.jar从你的类路径中删除并尝试使用上面提到的 WebLogic 文档中描述的 TopLink。

鉴于文档,我将只做一点说明:默认情况下,WebLogic 10.3.5 使用 JPA 1.0 以保持 Java EE 5 的兼容性。由于 JPA 2.0 是 Java EE 6 的一部分,因此您必须显式启用它。

于 2012-04-27T00:42:26.200 回答