JAX-WS 學習一:基於java的最簡單的WebService服務

來源:互聯網
上載者:User

標籤:

JAVA 1.6 之後,內建的JAX-WS API,這使得我們可以很方便的開發一個基於Java的WebService服務。

基於JAVA的WebService 服務 

1、建立服務端WebService服務介面

package com.st.services;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;import javax.jws.soap.SOAPBinding.Style;import javax.jws.soap.SOAPBinding.Use;@WebService(serviceName="calculator",targetNamespace="com.st.services")@SOAPBinding(style=Style.RPC,use=Use.LITERAL)public class CalculatorService {public int sum(int a,int b){return a+b ;}}

 

@WebService

此注示用來標明此java類為某個WebService的實作類別或者標明此java介面定義了某個WebService的介面。

@WebService有六個參數可以用來配置這個WebService的定義:

  1、endpointInterface:指向一個定義此WebService抽象定義介面的完整類路(如果沒有定義介面,直接寫的實作類別,則該參數不需要)

  2、name:WebService名;預設的port名為"實作類別名+Port",binding名為"實作類別名+PortBinding",通過指定name的值來替換 實作類別名。

  3、portName:指定port名,可以完成替換預設port名,或由上面的"name"指定的port名。

  4、targetNamespace:指定targetNamespace值,預設的值為 "http://包名/",可以通過此變數指定一個自訂的targetNamespace值。(註:如果分別定義和介面和實現,則他們有各自的targetNamespace)

    5、serviceName:指定service名

    6、wsdlLocation:指向一個預定義的wsdl的檔案,替代自動產生的wsdl檔案。

!如果不想定義的話,可以直接寫一個@WebService ,其他的屬性用預設的。

@WebMethod

  1. action:指定此方法對應的action
  2. exclude:true --表示此方法包含在web服務中;false表示排除此方法
  3. operationName:指定方法對應的operation的名字。

!如果你對你的WebService方法沒有啥特殊要求的話,該參數可以不寫,那將會使你的所有的方法發布出去。

 

2、發布服務

 public static void main(String[] args) {          Endpoint.publish("http://localhost:8088/calculator",                  new CalculatorService());      }  

 

這裡publish方法需要兩個參數:

  • address:服務對外暴露的用於調用服務的地址
  • implementor:服務的實現對象

啟動這個Server類,就可以訪問服務了。要測試服務有沒有啟動,可以輸入http://localhost:8088/calculator?wsdl,如果一切正常,就可以看到一個wsdl定義內容,表示服務已經成功啟動。

 

3、用戶端程式的調用

    用戶端的代碼建議使用wsimport 去產生(前提:在你的電腦上已經配置了JDK的環境變數)

    直接在CMD中運行:

wsimport -keep -p com.st.client http://localhost:8088/calculator?wsdl 

  -p : 定義產生包的包名(可以不寫)

然後將產生的java類放到項目中進行調用 

 

!使用java發布WebService,預設是發布到了JDK的WEB容器中了,但在具體的項目中,更多的是有獨立WEB容器(eg:Tomcat),所有這裡只是對此做個簡單的介紹。

JAX-WS 學習一:基於java的最簡單的WebService服務

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.