最近做了一個項目是基於springside的框架,但是客戶那邊是要求部署到tomcat的。
按照常規我把weblogic.xml放到項目中,貼出weblogic代碼:
<?xml version='1.0' encoding='UTF-8'?> <weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/weblogic-web-app"> <charset-params> <input-charset> <resource-path>/</resource-path> <java-charset-name>UTF-8</java-charset-name> </input-charset> </charset-params> <jsp-descriptor> <precompile>true</precompile> </jsp-descriptor> <container-descriptor> <prefer-web-inf-classes>true</prefer-web-inf-classes> </container-descriptor> <context-root>/</context-root> </weblogic-web-app>
按照以往的項目部署都是這么放的,但是這次卻報錯了。
weblogic拋出如下異常信息:
java.lang.NoSuchMethodError: javax/persistence/spi/PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode
但是從百度得到的信息多是我原先的代碼。
<?xml version="1.0" encoding="UTF-8"?> <weblogic-web-app ...> ... <container-descriptor> <prefer-application-packages> <package-name>antlr.*</package-name> <package-name>org.hibernate.*</package-name> <package-name>javax.persistence.*</package-name> </prefer-application-packages> </container-descriptor> </weblogic-web-app>
原話是:I tried with the <prefer-web-inf-classes>true</prefer-web-inf-classes>
, with no luck. I'm using Weblogic 11g (10.3.6), Hibernate 4.1.9 and Spring 3.2.1. With this, persistence works like a charm!
於是我把這段代碼改入到我的weblogic.xml這樣就解決了上述的問題。