Sim*_*lls 3 java spring hibernate weblogic jpa
我遇到了一个经典问题,即尝试在weblogic服务器上运行Web应用程序并因为weblogic服务器具有旧的类副本而遇到错误.
我遇到的主要问题是在尝试使用JPA 2.1时遇到以下问题:
weblogic.application.ModuleException: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;
Run Code Online (Sandbox Code Playgroud)
这里显而易见的答案是它在没有该类的服务器上使用JPA版本.
我已将weblogic.xml文件设置为以下内容:
<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd">
<wls:weblogic-version>12.1.3</wls:weblogic-version>
<wls:jsp-descriptor/>
<wls:debug>true</wls:debug>
</wls:jsp-descriptor>
<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>
<wls:context-root>DiscoveryPortal</wls:context-root>
</wls:weblogic-web-app>
Run Code Online (Sandbox Code Playgroud)
关键线是:prefer-web-inf-classes:true
这似乎适用于某些课程但不是全部.
Weblogic 12c(据说)允许在.war和.ear文件中进行类过滤.我建议搬家:
<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>
Run Code Online (Sandbox Code Playgroud)
至:
<prefer-application-packages>
<package-name>javax.persistence.*</package-name>
</prefer-application-packages>
<prefer-application-resources>
<resource-name>javax.persistence.*</resource-name>
<resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
</prefer-application-resources>
Run Code Online (Sandbox Code Playgroud)
过滤效果似乎要好得多prefer-web-inf-classes
.
请参阅此处的Oracle文档,其中说明它适用于.war文件.如果没有,您可以考虑切换到.ear以查看会发生什么.
归档时间: |
|
查看次数: |
6898 次 |
最近记录: |