java中webservice生成/呼叫方式小結
阿新 • • 發佈:2018-11-23
一、通過axis2方式釋出
1、用POJO形式釋出(無需配置)
(1)將axis2.war防置tomcat的webapps中,啟動伺服器
(2)將沒有package包(pojo類不能放置在任何包中)的class檔案放置到放置在C:\apache-tomcat-8.5.20\webapps\axis2\WEB-INF\pojo
(3)重新啟動tomcat
(4)開啟
http://localhost:8080/axis2/services/Hello?wsdl
或
http://localhost:8080/axis2/services/listServices
即可開啟檢視。
2、通過配置services.xml然後打包成aar檔案進行釋出
(1)建立需要提供服務的類class檔案
(2)編寫services.xml檔案
(3)根據class檔案的package路徑配置如下
D:\ws\ com\sinosoft\webservice\HelloServiceNew.class
D:\ws\META-INF\services.xml
(4)然後在ws目錄下進行打包操作,
jar cvf ws.aar .
(5)將生成好的aar檔案放在 <Tomcat安裝目錄>\webapps\axis2\WEB-INF\services目錄中,完成。
其中配置檔案格式如圖
沒有返回值時:<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> 有返回值時: <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> 3、通過匯入axis2相關包,在自定義web工程中釋出webservice
(1)準備好相關服務類
(2)配置web.xml檔案,加入axis2的servlet配置:
<!--Axis2 config start-->
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
(3)將原始axis2的工程下的
modules、service、lib和conf資料夾拷至自定義工程下的WEB-INF目錄下
(4)然後在services下新建{servicename}(自定義也可以)/META-INF路徑,META-INF下新建services.xml:
(5)啟動服務,訪問http://127.0.0.1:8080/webServe/services/{services.xml中parameter的name}?wsdl即可 4、通過javax.jws.*相關包的註解方式釋出webservice服務 (1)在沒有axis2jar包的普通java工程或web工程下( 可以使用監聽器或者Servlet來發布WebService),新建普通類 (2)[email protected]註解類,提供服務的方法不能為static、final (3)如圖方法,釋出後訪問,即可 http://localhost:9001/hello?wsdl
(4)暫時不提供入參,待 完善
二、通過Apache CSXF方式釋出 1、main方式 2、基於Spring釋出到容器 3、不基於Spring釋出到容器
三、客戶端的編寫與呼叫 1、Java通過RPC遠端呼叫方式訪問WebService的服務端
2、應用document方式呼叫
3、用wsdl2java簡化客戶端的編寫 (1)在axis2官網下載 axis2-x.x.x-bin.zip,找到bin裡面就可以找到wsdl2java.bat (2)通過cmd到bin目錄下執行命令 wsdl2java -uri http://localhost:8080/axis2/services/SimpleService?wsdl -p com.peide.webservice.axis2 -s -o stub -uri 後面執行的是 需要訪問的wsdl, -p 是檔案生成的包名 -o stub生成的檔案目錄,是bin目錄下面的 (3)將bin下面的檔案複製到-p的包下 (4)通過如圖方式進行呼叫
4、用wsimport生成客戶端程式碼 (1)確認C:\Program Files\Java\jdk1.8.0_144\bin下的wsimport.exe (2)執行 wsimport -keep http://localhost:9001/hello?wsdl ,完成無錯,重新整理str目錄 (3)關注Hello.java和HelloService.java (4)如圖,直接呼叫(呼叫很簡單)
PS.部分內容不完善,待補充。
沒有返回值時:<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" class="org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver" /> 有返回值時: <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> 3、通過匯入axis2相關包,在自定義web工程中釋出webservice
(5)啟動服務,訪問http://127.0.0.1:8080/webServe/services/{services.xml中parameter的name}?wsdl即可 4、通過javax.jws.*相關包的註解方式釋出webservice服務 (1)在沒有axis2jar包的普通java工程或web工程下( 可以使用監聽器或者Servlet來發布WebService),新建普通類 (2)[email protected]註解類,提供服務的方法不能為static、final (3)如圖方法,釋出後訪問,即可 http://localhost:9001/hello?wsdl
(4)暫時不提供入參,待 完善
二、通過Apache CSXF方式釋出 1、main方式 2、基於Spring釋出到容器 3、不基於Spring釋出到容器
三、客戶端的編寫與呼叫 1、Java通過RPC遠端呼叫方式訪問WebService的服務端
2、應用document方式呼叫
3、用wsdl2java簡化客戶端的編寫 (1)在axis2官網下載 axis2-x.x.x-bin.zip,找到bin裡面就可以找到wsdl2java.bat (2)通過cmd到bin目錄下執行命令 wsdl2java -uri http://localhost:8080/axis2/services/SimpleService?wsdl -p com.peide.webservice.axis2 -s -o stub -uri 後面執行的是 需要訪問的wsdl, -p 是檔案生成的包名 -o stub生成的檔案目錄,是bin目錄下面的 (3)將bin下面的檔案複製到-p的包下 (4)通過如圖方式進行呼叫
4、用wsimport生成客戶端程式碼 (1)確認C:\Program Files\Java\jdk1.8.0_144\bin下的wsimport.exe (2)執行 wsimport -keep http://localhost:9001/hello?wsdl ,完成無錯,重新整理str目錄 (3)關注Hello.java和HelloService.java (4)如圖,直接呼叫(呼叫很簡單)
PS.部分內容不完善,待補充。