WebService服務端與客戶端得簡單應用,效能測試
用途: 比如需要從其他系統獲取資訊,但是不能暴露自己得實現方式的時候。
比較常用得有: 1.HttpClient 2.WebService (推薦使用WebService)
一.簡單介紹
服務端: 暴露出一個URL地址即可,列入
可以發現訪問進去就是一個XML檔案
從下往上看
這個fisrtWebServiceImplService就是暴露出來得一個方法
具體程式碼:
FisrtWebServiceImplService f = new FisrtWebServiceImplService(); //獲取到一個物件
繼續往上看
portType 咋們可以 用上面物件f FisrtWebServiceImpl port = f.getFisrtWebServiceImplPort();
operation具體方法 System.out.println(port.getAddressByPhoneNo("13120090804"));即可調到具體得方法
二.正式開始自己寫服務,自己去調服務
1.先寫服務端(Service)(注意要求JDK1.8)
1.1 建立一個介面
package webServiceWeb; /** * @author 葉成浪 * @time 2018年11月13日 - 下午4:38:26 * @email [email protected] **/ public interface FisrtWebService { String getAddressByPhoneNo(String phoneNo);
}
1.2 接著寫實現類(注意:採用註解@WebService)
package webServiceWeb.impl;
import javax.jws.WebService;
import webServiceWeb.FisrtWebService;
/** * @author 葉成浪 * @time 2018年11月13日 - 下午4:40:04 * @email [email protected] **/ @WebService public class FisrtWebServiceImpl implements FisrtWebService {
@Override public String getAddressByPhoneNo(String phoneNo) { return phoneNo+"歸屬於北京"; }
}
1.3 釋出服務
package Test01WebService;
import javax.xml.ws.Endpoint;
import webServiceWeb.impl.FisrtWebServiceImpl;
public class Test01 { public static void main(String[] args) { Endpoint.publish("http://localhost:8888/weather?wsdl", new FisrtWebServiceImpl()); System.out.println("釋出成功"); } } 服務端釋出成功 (如果要停止服務 doc命令採用 taskkill /f /PID PID) 即可刪除服務埠
2.客服端呼叫WebService
2.1 通過doc命令生成程式碼
wsimport -s . http://localhost:8888/weather?wsdl 即可把WebService程式碼生成到本地
2.2 客戶端調取伺服器方法獲取具體得資料
package Test;
import java.net.MalformedURLException; import java.net.URL;
import javax.xml.namespace.QName; import javax.xml.ws.Service;
import webserviceweb.impl.FisrtWebServiceImpl;
public class Test02 {
public static void main(String[] args) { //方式一 調伺服器方法 // FisrtWebServiceImplService f = new FisrtWebServiceImplService(); // FisrtWebServiceImpl port = f.getFisrtWebServiceImplPort(); // System.out.println(port.getAddressByPhoneNo("13120090804")); //方式二 調伺服器方法 try { Service service = Service.create(new URL("http://localhost:8888/weather?wsdl"), new QName("http://impl.webServiceWeb/", "FisrtWebServiceImplService")); FisrtWebServiceImpl impl = service.getPort(FisrtWebServiceImpl.class); System.out.println(impl.getAddressByPhoneNo("13120090804")); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
}