Kimi's NutShell

          我荒廢的今日,正是昨日殞身之人祈求的明日

          BlogJava 新隨筆 管理
            141 Posts :: 0 Stories :: 75 Comments :: 0 Trackbacks

          (CSdn上面的一個例程:http://topic.csdn.net/t/20050422/17/3959160.html)

          AXIS實現web服務配置部署簡要流程
          1:編寫服務器端接口,并在<webapp>/WEB-INF/classes下編譯。

          ?????? javac –d . *.java

          2:在%APP_HOME%/webapp/WEB-INF目錄下創建server-config.wsdd(AXIS配置文件,所有web服務都要在該文件中注冊)文件。形如:

          <?xml version="1.0" encoding="UTF-8"?>
          <deployment xmlns="??????????????????? <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>?
          ??????????????????? <parameter name="sendXsiTypes" value="true"/>?
          ??????????????????? <parameter name="sendMultiRefs" value="true"/>?
          ??????????????????? <parameter name="sendXMLDeclaration" value="true"/>?
          ??????????????????? <parameter name="axis.sendMinimizedElements" value="true"/>?
          ??????????????????? <requestFlow>??
          ?????????????????????????????? <handler type="java:org.apache.axis.handlers.JWSHandler">???
          ???????????????????????????????????????? <parameter name="scope" value="session"/>??
          ?????????????????????????????? </handler>??
          ?????????????????????????????? <handler type="java:org.apache.axis.handlers.JWSHandler">???
          ???????????????????????????????????????? <parameter name="scope" value="request"/>???
          ???????????????????????????????????????? <parameter name="extension" value=".jwr"/>??
          ?????????????????????????????? </handler>?
          ??????????????????? </requestFlow>
          ????????? </globalConfiguration>
          ????????? <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
          ????????? <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
          ????????? <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>??
          ?
          ????????? <service name="login" provider="java:RPC">?
          ??????????????????? <!-- 服務類名 -->????
          ??????????????????? <parameter name="className" value="com.test.service.loginService"/>?
          ??????????????????? <!-- 允許訪問所有方法 -->?
          ??????????????????? <parameter name="allowedMethods" value="*"/>
          ????????? </service>?
          ????????? <transport name="http">?
          ??????????????????? <requestFlow>??
          ?????????????????????????????? <handler type="URLMapper"/>??
          ?????????????????????????????? <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>?
          ??????????????????? </requestFlow>
          ????????? </transport>
          ????????? <transport name="local">?
          ??????????????????? <responseFlow>??
          ?????????????????????????????? <handler type="LocalResponder"/>?
          ??????????????????? </responseFlow>
          ????????? </transport>
          </deployment>

          ?


          ?


          注:server-config.wsdd文件也可以通過編寫deploy.wsdd文件生成,具體方法為,在%APP_HOME%/webapp/WEB-INF目錄下創建deploy.wsdd文件(SOAP發布描述文件),形如:

          <deployment xmlns="??????? <parameter name="className" value="LoginService"/>
          ??????? <parameter name="allowedMethods" value="*"/>
          ??? </service>
          </deployment>
          然后將相應服務器端class編譯后在命令行輸入:

          java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd
          將在當前目錄下生成server-config.wsdd文件。


          完成以上操作后,可在瀏覽器中通過
          http://localhost:8080/axis/services/login?wsdl 訪問該服務。
          ?


          3:JAVA客戶端實現:

          可以通過AXIS中的org.apache.axis.wsdl.WSDL2Java類將已發布的web服務進行客戶端實例化,具體命令為:在%APP_HOME%/webapp/WEB-INF目錄下命令行輸入:

          Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java url[YiWang1]

          ?

          命令執行后會在本地當前目錄下生成以url為模版的package目錄層次結構(如:local.axis.service.*),該目錄中針對每個服務器端接口會自動生成4個本地類。

          其中:

          ?????? inferface LoginService在客戶端本地定義服務器接口的映射。

          ?????? interface LoginServiceService定義了用于獲得web服務的getter方法。

          ?????? class LoginServiceServiceLocator具體實現LoginServiceService接口,保存了服務器的url等相關信息。

          ?????? class LoginSoapBindingStub 具體實現LoginService,負責服務器交互。

          ?


          (部署了web服務之后,如果接口不變而url發生改變,可以直接在客戶端更新LoginServiceServiceLocator中有關服務器地址的相關信息,或者用配置文件的形式修改)

          編譯以上幾個類時需要axis.jar,jaxrpc.jar兩個包,命令為:

          ? javac -classpath lib\axis.jar;lib\jaxrpc.jar –d . *.java
          編譯成class后可以通過jar命令打包作為接口部署在客戶端。


          客戶端測試例程:

          ?????? 如果通過java應用程序形式進行測試,命令為:

          ??????? java -Djava.ext.dirs=lib -cp . package.class


          --------------------------------------------------------------------------------

          ?[YiWang1]服務器通過Wsdl形式發布的web服務的完整url地址。

          posted on 2006-10-13 09:54 Kimi 閱讀(315) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 乳山市| 依兰县| 分宜县| 阿城市| 临泽县| 阳西县| 林周县| 南木林县| 安阳市| 南投市| 郎溪县| 永胜县| 旬邑县| 曲阳县| 莱阳市| 云龙县| 尖扎县| 长治县| 中牟县| 定南县| 博客| 卓资县| 稷山县| 固原市| 班玛县| 五莲县| 阿瓦提县| 杂多县| 卢湾区| 民乐县| 江北区| 玛曲县| 涪陵区| 民丰县| 建湖县| 江孜县| 五大连池市| 许昌市| 洛隆县| 图们市| 新龙县|