Java web專案從tomcat轉為weblogic環境所遇到的問題
最近公司需要將原本在tomcat上開發的專案部署在weblogic上執行,因為原先對weblogic沒有接觸,不知道tomcat和weblogic的主要區別,只能邊學邊找資料,所以避免不了走了許許多多的彎路。網上的資料可能因為版本、環境的不一致,無法解決問題。
1、出現jar衝突 java.lang.NoSuchMethodError: javax/persistence/Persistence.getPersistenceUtil()L
javax/persistence/PersistenceUtil;
經檢測 10.3.6 版本的wlc預設配置載入的 javax.persistence_1.0.0.0_1-0-2.jar, 此jar包版本跟專案中用到的 hibernate-jpa-2.0-api-1.0.0.Final.jar 版本不相容 ,
而 javax.persistence_1.1.0.0_2-0.jar 與 專案中的hibernate-jpa-2.0-api-1.0.0.Final.jar 版本是相容的, 因此只需要將 javax.persistence_1.0.0.0_1-0-2.jar 替換成 javax.persistence_1.1.0.0_2-0.jar 即可.
2、 在weblogic中釋出的應用使用了commons-lang-2.4.jar,但在呼叫。StringUtils.startsWith方法時,報異常
Java.lang.NoSuchMethodError: org.apache.commons.lang.StringUtils.startsWith(Ljava/lang/String;Ljava/lang/String;)Z。
其實這個問題原因就是weblogic啟動時預先載入了一個commons-lang的包(bea11g\modules\com.bea.core.apache.commons.lang_2.1.0.jar)。導致應用下面的2.4的包未載入。
解決辦法:
在WEB-INF下面新增weblogic.xml檔案,其中新增以下內容:
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
3、log4j衝突
在tomcat中需要配置log4j,但是到weblogic會產生衝突,目前知道主要原因是weblogic本身也有載入log4j,所以現在把專案中的web.xml中的log4j的配置註釋掉
4、webservice不能用