Weblogic下部署服務遭遇各種問題的解決方案
Weblogic下部署服務注意事項:
1. 解決weblogic與hibernate的jar包衝突問題:
首先找到該系統的DOMAIN_HOME(即你所建的域所在的位置)如:域empi的DOMAIN_HOME為:/home/wl11g/Oracle/Middleware/user_projects/domains/empi,再在${DOMAIN_HOME}/bin下找到startWeblogic.sh檔案用文字編輯器將其開啟,並在裡面加入如下內容(在此之前需要將準備好的antlr-2.7.6.jar+拷貝到${DOMAIN_HOME}/lib目錄下,也可以是其他目錄,但下面的hibernate_classpath的值也得跟著作出相應的變化):
export hibernate_classpath=${DOMAIN_HOME}/lib/antlr-2.7.6.jar
接著修改SAVE_CLASSPATH成SAVE_CLASSPATH="${hibernate_classpath}:${CLASSPATH}",此時該問題已經成功解決。
2. 解決weblogic找不到hibernate.dialect的問題:
在將要部署的應用的classpath下面加入一個hibernate.properties檔案,裡面只要一句設定hibernate.dialect的值的內容即可(不論你是否在hibernate.cfg.xml或spring的配置檔案中有進行相關的配置,只要是出現系統找不到hibernate.dialect的異常時便可以通過此方法解決),如:hibernate.dialect=org.hibernate.dialect.Oracle10gDialect。
3. 如果你需要在該伺服器上釋出基於axis2的webservice時還需解決axis2與weblogic的jar包衝突問題。
在你的應用的WEB-INF下面新建一個weblogic.xml檔案,其內容如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD WebApplication 8.1//EN""http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
</weblogic-web-app>
但此時如果你的應用中有重複的jar包,將會報jar包衝突的相關異常,此時要細心處理,避免這種情況出現,(如果你的應用的classpath下面有xml-api這個jar包應該刪掉,否則會出現jar包衝突異常)此問題到寫該文件為止還沒又發現更好的解決方案。
4.:如果你的應用在tomcat等應用伺服器下工作都正常,部署在weblogic下時卻發現由spring管理的某個javaBean沒有被定義,這時可能是你在web.xml中配置spring的配置檔案使用了萬用字元的原因,可以試將原本用萬用字元表示的一系列spring配置檔案改成全名配置。或許有希望解決問題
5:如果你有配置檔案放在了classpath下面,而且程式碼裡面用File這樣的類來讀取這個檔案可能會出現找不到相關檔案的情況,這時可以改用InputStream來讀取該檔案。