Web Service開發執行個體(java代碼)

來源:互聯網
上載者:User

   WebService又是一種進階應用程式,與之前學習的Struts、Spring、Hibernate等架構不同。WebService是面向服務的架構(SOA),看起來像是比SSH架構要大。那麼它到底是做什麼用的?什麼才是面向服務的架構?

 

       讓我們來看一種需求,集團公司可能具有多種WEB應用。比如,前年開發了個進銷存系統、去年開發了一個ERP、今年又開發了一個OA。現在這家集團公司需要將這三個系統整合,難道需要重新編碼將它們整合嗎?而這三個系統又是用不同語言編寫的,這種成本對公司來說無疑是一種浪費。WebService可以很好的解決這種需求。

 

       WebService是可以進行跨語言、跨平台、分布式系統間整合的方案,WebService像是一條線將這些系統穿起來——企業服務匯流排(ESB)。WebService使用簡易物件存取通訊協定 (SOAP)(SOAP)使用http協議傳輸xml資料(xml是最常用的,也有其他格式資料。)來完成系帶間的整合。

 

       什麼是整合?當然是功能和資料的整合,也就是一個系統可以調用另一個系統的WebService介面來完成資料的互動。這樣我們就需要知道,提供WebService服務功能的應用公開了哪些介面,我們可以通過WebService描述文檔(WSDL)得知。WSDL不需要我們手動編寫,Java的WebService實現可以為我們自動產生。JDK1.6新增支援WebService,但還不夠成熟。所以我們使用Apache第三方開源組織提供的WebService實現——Axis。

 

        Axis的目前的版本是Java版本,它的C++版本正在開發中。Axis是一個功能強大的soap引擎,關於它們的詳細資料在此就不做介紹了。下面,讓我們來編寫一個例子程式,以瞭解WebService的應用流程。

 

一、編寫支援WebService的WEB應用

       1.建立工程

       Project Name:TestWebService

       Target runtime:Apache Tomcat V6.0

       其他的預設

 

       2.添加Axis的Jar包

       在axis的jar包目錄lib子目錄中的所有jar檔案添加到工程中。

 

       3.配置web.xml

       在axis的webapps子目錄中有一個axisWeb應用,我們直接使用它的web.xml檔案內容。

 

4.添加功能類

 

 1 package com.enfang;
2
3
4  public class TestLiu {
5
6 public String getInfo(String aa){
7 return "webservice:"+aa;
8 }
9 }
10  

 

  5.部署WebService

 

       我們可以將需要公開的類檔案複製到WEB應用目錄下,並修改檔案尾碼名為jws。把類檔案更名並放到WEB目錄下?這樣做並不好,它被暴露了。

 

       所以在這裡我們使用一個常量的部署方法,在工程中(根目錄)添加一個deploy.wsdd檔案:

XML代碼

 1 <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java=
2
3 "http://xml.apache.org/axis/wsdd/providers/java">
4 <service name="TestLiu" provider="java:RPC">
5 <parameter name="className" value="com.enfang.TestLiu"/>
6 <parameter name="allowedMethods" value="*"/>
7 <parameter name="scope" value="session"/><!-- request, session, or application -->
8 </service>
9  </deployment>
10  

 

     首先將工程部署到Tomcat伺服器上,並啟動Tomcat伺服器。然後在工程上右鍵-->Run As...-->Run Configurations...,建立一個JavaApplication。在main頁面中,project指定為我們的TestWebService,MainClass指定為org.apache.axis.client.AdminClient。在Arguments頁面下設定Program arguments為-l http://localhost:8080/TestWebService/servlet/AxisServlet deploy.wsdd。點擊Run按鈕。

 

       完成上面的操作後,AdminClient會為我們部署在Tomcat的TestWebService的WEB-INF目錄下產生一個server-config.wsdd檔案,它是提供給Axis使用的設定檔。

 

6.產生用戶端

在根目錄下建一個bat檔案例如:WSDL2Java.bat,代碼如下:

Ruby代碼

set Axis_Lib=.\WebRoot\WEB-INF\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=.\src
set Package=client.webservice
set wsdl_path=http://localhost:8080/TestWebService/services/TestLiu?wsdl
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% %wsdl_path%
pause

 

 

然後執行這個檔案產生用戶端,用戶端目錄在src/client/webservice.

7、調用webservice用戶端

java代碼

 1 package cn.anycall.test;
2  import java.rmi.RemoteException;
3
4  import javax.xml.rpc.ServiceException;
5
6  import client.webservice.*;
7  public class Test {
8
9 /**
10 * @param args
11 * @throws ServiceException
12 * @throws RemoteException
13 */
14 public static void main(String[] args) throws ServiceException, RemoteException {
15 // TODO Auto-generated method stub
16   TestLiuService service = new TestLiuServiceLocator();
17 TestLiu_PortType client = service.getTestLiu();
18 String aa = client.getInfo();
19 System.out.println(aa);
20 }
21
22 }
23
24

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.