熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

使用Axis2以普通的Java類建立Web Services

2013-11-23 19:21:01  來源: Java核心技術 

  Apache Axis是一個Web Services系統服務和客戶端的實現

  下載和部署Axis

  )下載地址

  

  下載Binary Distribution和WAR Distribution這兩個壓縮包

  )將下載的axiswarzip解壓解壓後將axiswar復制到tomcat的webapps目錄下

  )啟動tomcat浏覽器訪問//localhost:/axis/ 出現以下界面部署成功

  

  

  以普通的Java類建立Web Services

  )需要注意的這個普通的Java類是沒有package的

  )在\apachetomcat\webapps\axis\WEBINF\目錄下建立pojo目錄

  )Java類

  /** * 第一個Web Services  * @author Luxh */public class FirstService {

  public String sayHello(String name) {

  String result = Hello+name+this is first Axis Application!;

  return result;

  }

  public String getInfo() {

  return This is first Axis Application!;

  }

  }

  將這個類編譯後的FirstServiceclass文件復制到\apachetomcat\webapps\axis\WEBINF\pojo目錄下無需重啟tomcatAxis支持熱部署


  )訪問//localhost:/axis/services/listServices

  

  可以看到普通的Java類已經發布為web Services

  )訪問web Services

  //localhost:/axis/services/FirstService/getInfo

  其中//localhost:/axis/services/FirstService/  是Web Services 的地址getInfo是方法名稱

  

  其中//localhost:/axis/services/FirstService/  是Web Services 的地址sayHello是方法名稱?name=LiHuai是參數名稱和參數值

  傳參數的時候要注意一定要跟提供服務的方法中的參數名一致public String sayHello(String name)

  

  Java客戶端使用RPC方式調用Web Services

  )新建一個Java Project將axisbinzip解壓解壓後將\axis\lib\目錄下的所有jar引入到項目的classpath路徑中

  )客戶端代碼

  package cnluxhwsclient;import javaxxmlnamespaceQName;import orgapacheaxisAxisFault;import orgapacheaxisaddressingEndpointReference;import orgapacheaxisclientOptions;import orgapacheaxisrpcclientRPCServiceClient;import orgjunitTest;public class FirstClient {

  /** * 用RPC方法調用Web Services * @throws AxisFault

  */@Testpublic void testGetServices() throws AxisFault {    //創建一個訪問服務的客戶端

  RPCServiceClient client = new RPCServiceClient()    //獲取操作客戶端選項的持有者

  Options options = clientgetOptions()    //設置要調用的Web Services 的地址

  String ServiceEPR = //localhost:/axis/services/FirstService;

  EndpointReference epr = new EndpointReference(ServiceEPR)

  optionssetTo(epr)

  //因為提供Web Services普通的Java類沒有package

  //所以默認是

  //getInfo是要調用的方法

  QName qName = new QName( getInfo

  //qName    調用的方法

  //new Object[]{}傳遞的參數值

  //new Class[]{}  返回值類型

  Object[] result = clientinvokeBlocking(qName new Object[]{} new Class[]{Stringclass})

  Systemoutprintln(返回的結果是+result[])//調用sayHello方法

  qName = new QName( sayHello

  result = clientinvokeBlocking(qName new Object[]{LiHuai} new Class[]{Stringclass})

  Systemoutprintln(返回的結果是+result[])

  }}

  使用生成stub的方式調用Web Services

  可以使用wsdljava命令生成調用Web Services的客戶端代碼

  wsdljava命令格式wsdljava //localhost:/axis/services/FirstService?wsdl p cnluxhwsclient s o stub

  uri 指定訪問的Web Services wsdl文件路徑

  p 指定了生成的Java類的包名

  o 指定了生成文件保存的根目錄

  )在命令行進入到axisbinzip解壓後的\axis\bin\目錄因為wsdljava命令在這個目錄中

  )輸入 wsdljava //localhost:/axis/services/FirstService?wsdl p client s o stub 然後回車

  )執行完後在\axis\bin\目錄下有個stub文件夾在stub文件夾下的src\cn\luxh\ws\client包下有個FirstServiceStubjava和FirstServiceUnsupportedEncodingExceptionExceptionjava類我們把這兩個類復制項目中相應的包下就可以直接調用Web Services方法了

  )stub客戶端代碼

  package cnluxhwsclient;import javarmiRemoteException;import javaxxmlnamespaceQName;import orgjunitTest;public class FirstClient {@Testpublic void testGetServiceByStub()
 throws RemoteException FirstServiceUnsupportedEncodingExceptionException {FirstServiceStub firstServceStub = new FirstServiceStub()

  //wsdljava命令將Web Services 的方法封裝成了靜態類

  //所以需要通過下面的方法獲取返回結果FirstServiceStubGetInfo getInfo =  new FirstServiceStubGetInfo()

  String ruselt = firstServceStubgetInfo(getInfo)get_return()

  Systemoutprintln(getInfo方法返回值+ruselt)

  FirstServiceStubSayHello sayHello = new FirstServiceStubSayHello()

  sayHellosetName(LiHuairuselt = firstServceStubsayHello(sayHello)get_return()

  Systemoutprintln(sayHello方法返回值+ruselt)

  }

  


From:http://tw.wingwit.com/Article/program/Java/hx/201311/26702.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.