WebLogic11g-部署web應用(以Springside3爲例)

Weblogic11g部署web應用,有三種方式,很是簡單,可是不少新手部署老是出現若干錯誤,不知道如何解決。下面以白衣大神的springside3應用舉例(緣由是springside3頗有表明性)詳細講解:
一、準備springside3的應用(mini-web、mini-service),這裏我整理爲一個war包,一個web應用的文件夾,放在網盤上,提供下載。
http://pan.baidu.com/share/link?shareid=1314310108&uk=3222190371
二、自動部署(autodeploy方式)
上一篇http://my.oschina.net/u/927446/blog/160023 建立domain以後,domain所在目錄有個文件夾是autodeploy,如圖所示:

是的,沒錯,就是它。那還等什麼?第一步:直接把web應用文件夾(這裏以mini-web應用爲例)copy過去就能夠了。以下圖所示:

第二步:登陸domain的控制檯,點擊「域結構」-》「部署」,可看到以下界面:

說明此時web應用已經成功部署了【注意:1)觀察狀態,以及部署順序,2)上一篇domain建立時提到開發模式,這就是利用開發模式的輪訓自動熱部署的】
第三步:既然部署成功了,那麼趕忙訪問應用吧,以下圖所示:

實際上,autodeploy方式是不須要重啓domain的。
【注意點】
1)自動部署適合開發階段使用,在生產環境中,不建議使用
2)若是把應用copy到autodeploy中,在domain的控制檯中,點擊「域結構」-》「部署」,未發現若是所示的部署記錄,此時,你應該查看logs文件夾下面的日誌。通常狀況下,是你的應用問題致使部署失敗。
三、控制檯部署(console方式):
第一步:安裝web應用(這裏以mini-service應用爲例)
1)選擇安裝應用,如圖所示:

2)選擇應用位置,這裏以mini-service爲例,而且以war包部署:

【注意:這裏能夠選擇jar、rar、zip、war、ear、web應用文件夾】
3)下面幾步所有默認直到最後一步,點擊「完成」便可。



點擊「完成」按鈕以後,實際上domain正在爲你的配置加載web應用,此時你能夠觀察domain的命令控制檯(若是部署失敗,控制檯出現異常信息)。
wocao!居然有錯,截圖爲證:

此時返回console,再次回到部署的列表,以下圖所示:

很明顯,狀態爲「失敗」。此時你的頭腦應該在想,明明在tomcat下能夠跑,weblogic這麼爛,連個這麼簡單的應用都部署失敗?springside3你怎麼連weblogic都不支持?
好吧,咱們來分析錯誤的緣由(實際上不少應用在weblogic部署時,都會存在這些問題)
查看錯誤異常信息: html

Caused By: java.lang.NoSuchMethodError: org.apache.commons.lang.ClassUtils.getCl
ass(Ljava/lang/String;)Ljava/lang/Class;
        at org.dozer.util.DefaultClassLoader.loadClass(DefaultClassLoader.java:3
1)
        at org.dozer.DozerInitializer.loadBeanType(DozerInitializer.java:116)
        at org.dozer.DozerInitializer.initialize(DozerInitializer.java:98)
        at org.dozer.DozerInitializer.init(DozerInitializer.java:75)
        at org.dozer.DozerBeanMapper.init(DozerBeanMapper.java:116)
        Truncated. see log file for complete stacktrace

報錯信息爲apache-commons-lang的包有問題,爲啥在tomcat下面沒這個錯呢?這個錯誤是因爲weblogic根本沒有使用web應用/WEB-INF/lib下面的commons-lang包。如今咱們來解決吧,很簡單,編寫weblogic.xml,放到WEB-INF下面便可。weblogic.xml內容以下:


<?xml version="1.0" encoding="UTF-8"?>
<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/ejb-jar_3_0.xsd
http://xmlns.oracle.com/weblogic/weblogic-web-app
http://xmlns.oracle.com/weblogic/weblogic-web-app/1.2/weblogic-web-app.xsd">
    <wls:container-descriptor>
        <wls:prefer-application-packages>
            <wls:package-name>org.apache.commons.*</wls:package-name>
        </wls:prefer-application-packages>
    </wls:container-descriptor>
</wls:weblogic-web-app>


關掉domain的cmd控制檯,重啓domain。再次查看部署列表,以下圖所示:

沒看錯,只要增長一個weblogic.xml,重啓服務,這個應用狀態當即改成活動了。既然部署成功了,訪問mini-service提供的webservice服務wsdl,以下圖所示:

【注意:不少應用在其它容器中跑沒有問題,一旦在weblogic下面就有問題,主要就是weblogic做爲一個商業中間件,裏面整合了太多了javaee規範包以及一些第三方開源包,這就致使與web應用的包衝突,而weblogic優先使用本身整合的包,因此web應用自身的包沒有被用到。使用prefer-application-packages配置主要是讓weblogic預先使用應用的包】
四、命令部署(weblogic.deployer方式):
這種方式須要記住相關命令,既然有了autodeploy,console的方式,基本就能夠了。不過仍是附上命令部署的操做文檔吧,參考:
http://edocs.weblogicfans.net/wls/docs92/deployment/deploy.html
http://edocs.weblogicfans.net/wls/docs92/deployment/wldeployer.html
實際上,以上三種部署方式的目的,都會有個相同的結果,就是配置config.xml。具體位置:weblogic11\user_projects\domains\example\config\config.xml。
找到app-deployment節點:

<app-deployment>
    <name>_appsdir_mini-web_dir</name>
    <target>AdminServer</target>
    <module-type>war</module-type>
    <source-path>autodeploy\mini-web</source-path>
    <security-dd-model>DDOnly</security-dd-model>
    <staging-mode>nostage</staging-mode>
  </app-deployment>
  <app-deployment>
    <name>mini-service</name>
    <target>AdminServer</target>
    <module-type>war</module-type>
    <source-path>D:\work\webapps\mini-service.war</source-path>
    <security-dd-model>DDOnly</security-dd-model>
  </app-deployment>


下面是在問答頻道,我提問的關於weblogic相關問題,或許對你、他有所參考:
http://www.iteye.com/problems/97706
http://www.iteye.com/problems/97628
http://www.iteye.com/problems/97376
相關文章
相關標籤/搜索