前面講了用tomcat+axis來實現webservice,而網上對于weblogic+axis實現webservice卻不多,按照網上說的做卻總是報錯,不成功,所以我經過不停的試驗,終于配置成功了weblogic+axis
首先我們下載一個weblogic8.1.3,jdk和axis的下載參照Tomcat+axis那片文章里的下載安裝和設置
下載好后我們安裝weblogic,一直按下一步即可
安裝完成后運行Configuration Wizard來新建域配置,一直按下一步,直到輸入UserName,Password and Description(我們這里都設置成weblogic),然后在按下一步直到完成
然后我們將下載的axis壓縮包下的webapp目錄下的axis目錄拷貝到C:\bea\user_projects\domains\mydomain\applications下面
由于axis中的一些jar包和weblogic中的有沖突,所以要修改C:\bea\user_projects\domains\mydomain\startWebLogic.cmd文件,優先使用axis的jar,將其中的
set
CLASSPATH=%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%\jre\lib\rt.jar;%CLASSPATH%;%WL_HOME%\server\lib\webservices.jar
改成
set
CLASSPATH=%AXISCLASSPATH%;%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%\jre\lib\rt.jar;%WL_HOME%\server\lib\webservices.jar
或
set
CLASSPATH=%CLASSPATH%;%WEBLOGIC_CLASSPATH%;%POINTBASE_CLASSPATH%;%JAVA_HOME%\jre
\lib\rt.jar;%WL_HOME%\server\lib\webservices.jar(這里必須保證將AXISCLASSPATH加入了
CLASSPATH環境變量中)
保存運行這個文件啟動weblogic控制臺,如下圖
啟動好之后打開ie,在url中輸入http://localhost:7001/console,輸入用戶名和密碼進入Weblogic Server Console
點擊展開部署節點--點擊WEB應用程序模塊--然后點擊旁邊的部署新的新的應用程序模塊,會出現選擇web應用的窗口,如下圖
選擇相應目錄下的web應用程序,我們選擇axis,如下圖
點擊目標模塊按鈕,接著在出現的窗口中點擊部署即可(這里我發現如果不在環境變量CLASSPATH中設置%AXISCLASSPATH%時,部署將報錯)完成后如下圖
這是我們可以點擊測試選項中的鏈接,也可以在ie中輸入http://localhost:7001/axis/,如果出現以下界面,說明配置成功
這時我們就可以按照tomcat+axis那篇文章所說的發布web服務了
遇到的問題
weblogic+axis的最大問題是2者間jar包的沖突,客戶端調用web服務時會報
NullPointerException錯誤,網上都說是axis的saaj.jar和weblogic的webservices.jar沖突,須將
saaj.jar加在webservices.jar前面,我按網上這么加了也沒用,后來我把整個AXISCLASSPATH都加到了最前面,就如我上面
所說的那樣,嘿,他就好了,我暈俄,網上的人也不知道是怎么成功的
還有一種說法就是在web-inf目錄下加weblogic.xml,網上的人也沒說要加到哪個web-inf下,我想想只有我的axis目錄下有web-inf吧,就加他下面了,weblogic.xml的內容如下
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 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>
這
樣也可以解決客戶端調用web服務時會報NullPointerException的錯誤,但是我發現這樣做的后果是點擊axis的service的
wsdl時出現無法顯示頁面。所以經過我不斷的調試,只有像我前面說的那樣修改startWebLogic.cmd中的set
CLASSPATH項應該算是最完美的方法了,配這個東西的時候網上查了好久,都是千篇一律,說得沒頭沒尾,所以說還是得自己去實踐阿(實踐是檢驗真理的
唯一標準嘛0 && image.height>0){if(image.width>=510){this.width=510;this.height=image.height*510/image.width;}}" alt="" align="absmiddle" border="0">)
注:在部署好的web應用程序的web-inf中加入weblogic.xml需要重新部署web應用程序
修改了startWebLogic.cmd需重新執行startWebLogic.cmd,以便修改起作用
我在一個干凈的winxp sp2,JDK1.4.2.05,weblogic8.1.3的環境下部署了axis1.4,和同事在家遠程調用獲得成功
相關程序安裝目錄
JDK C:\j2sdk1.4.2_05
weblogic C:\bea
axis1.4 C:\axis14(lib下有一些jar需另外當,老實說我也不知道哪些起了作用,只是把網上所說得涉及到的jar都找來了,嘿嘿)
相關環境變量設置
AXIS_HOME=C:\axis14
AXIS_LIB=%AXIS_HOME%\lib
AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar;%AXIS_LIB%\wsdl4j-1.5.1.jar;%AXIS_LIB%\activation.jar;%AXIS_LIB%\xmlrpc-2.0.jar
JAVA_HOME=C:\j2sdk1.4.2_05
CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%AXISCLASSPATH%;
Path前加了%JAVA_HOME%\bin