長時間不寫博客,照片都忘記怎麼上傳了,由於上一篇圖片沒有上傳,所以刪掉,重做了一個。
最近公司讓基於別的公司的接口寫一個自己的接口,接口對於別的公司來說相當於客戶端,但對於自己本公司要調用的程序來說,又相當於服務端。
閒來無事,總結下。
先從java自帶的service開始
JAX-WS(java api xml webservice) 基於javaAPI的webService實現
用的工具是myeclipse
首先是服務端
新建webProject jax-wsServer 如圖:
新建包和類如下圖
既然是入門例子,咱就越簡單越好,關鍵看好流程
IMService.java 內容如下
package com.jax.server;
public interface IMyService {
public int add(int a,int b);
public int minus(int a,int b);
}
MyServiceImpl.java內容如下
package com.jax.server;
public class MyServiceImpl implements IMyService {
public int add(int a, int b) {
// TODO Auto-generated method stub
return a+b;
}
public int minus(int a, int b) {
// TODO Auto-generated method stub
return a-b;
}
}
以上基本準備工作就算完成了,下邊是應用MyEclipse具體生成的步驟。
1 右鍵 src-new others,選擇web service 如圖:
2.單擊下一步,選擇用JAX-WS方式,從java類創建,如圖:
3.點擊Next,選擇要用到的類,就是我們剛纔創建的MyServiceImpl,要是實體類。
選擇在工程中生成wsdl,如圖:
點擊Finish。
4.右鍵工程,選擇Properties,選擇"Java Build Path",然後選擇"Libraries",如圖:
5.點擊 Add Libraries,選擇 MyEclipse Libraries,如下圖:
6.點擊Next,選擇 JAX-WS,如圖:
7.點擊Finish,如下圖:
8.點擊OK,工程結構如下圖:
9.至此,服務端程序生成完畢,部署到Tomcat下,啓動Tomcat,訪問地址
http://localhost:8080/jax-wsServer/MyServiceImplPort?wsdl,如下圖
出現如上圖所示的wsdl頁面了,說明本地服務已經啓動,可以訪問了。
對外地址是http://localhost:8080/jax-wsServer/MyServiceImplPort?wsdl
命名空間targetNamespace="http://server.jax.com/"
服務名 portType name="MyServiceImplDelegate"
提供兩個方法 add和minus
這樣完整的WebService服務端,就配置併發布完成了。
下邊是jax-ws服務端的生成和調用方式。
1.可以新建工程(由於是測試,爲了省事,這裏和server用一個工程),右鍵src,選擇web Service Client,如圖:
2.選擇web Service Client,點擊Next,如下圖:
3.點擊Next,指定訪問的webService的路徑,就是我們剛纔訪問的地址,指定客戶端文件的包,如圖:
4.點擊Next,如下圖:
5.Finish完成,客戶端文件生成完畢,結構如下:
6.編寫測試類TestClient,代碼如下
package com.jax.client;
public class TestClient {
public static void main(String []arg){
//服務的具體類,繼承了service類
MyServiceImplService
service=new MyServiceImplService();
//服務的接口,通過getPort()方法得到
MyServiceImplDelegate se=service.getPort(MyServiceImplDelegate.class);
//通過服務的接口調用方法
int add=se.add(34, 23);
int minus=se.minus(34, 23);
System.out.println("34+23="+add);
System.out.println("34-23="+minus);
}
}
7.運行結果如下:
到此完整的關於 JAX-WS的服務端、客戶端的生成調用的整個過程就完成了,與大家一起學習、共勉。
後續會還有CXF的詳細過程。