標籤:產生 ams find bre mba imp clr jqm n3k
Web Service的實現方式有很多種,本篇介紹的是基於JAX-WS(純Java)實現的,然後藉由CXF工具產生Javabean。
第一步:建立一個Java工程,編寫CalService介面,此介面就是提供Web服務的介面。
1 package com.fx.inf; 2 3 import javax.jws.WebMethod; 4 import javax.jws.WebService; 5 6 //標記服務端點介面(SEI) 7 @WebService 8 public interface CalService { 9 10 //應用於伺服器服務端點介面(SEI)上的方法-求和的方法11 @WebMethod12 public double add(double i , double j );13 14 //應用於伺服器服務端點介面(SEI)上的方法-求差的方法15 @WebMethod16 public double sub(double i , double j );17 18 //應用於伺服器服務端點介面(SEI)上的方法-求積的方法19 @WebMethod20 public double mul(double i , double j );21 22 //應用於伺服器服務端點介面(SEI)上的方法-求商的方法23 @WebMethod24 public double div(double i , double j );25 26 }
第二步:編寫介面的實作類別CalServiceImpl。
1 package com.fx.inf.impl; 2 3 import javax.jws.WebMethod; 4 import javax.jws.WebService; 5 6 import com.fx.inf.CalService; 7 8 //endpointInterface表示該類必須實現此介面的所有方法,serviceName表示web service的服務名稱 9 @WebService(endpointInterface="com.fx.inf.CalService",serviceName="CalService")10 public class CalServiceImpl implements CalService {11 12 @Override13 @WebMethod14 public double add(double i, double j) {15 // TODO Auto-generated method stub16 return i + j;17 }18 19 @Override20 @WebMethod21 public double sub(double i, double j) {22 // TODO Auto-generated method stub23 return i - j;24 }25 26 @Override27 @WebMethod28 public double mul(double i, double j) {29 // TODO Auto-generated method stub30 return i * j;31 }32 33 @Override34 @WebMethod35 public double div(double i, double j) {36 // TODO Auto-generated method stub37 if (j != 0 ) {38 return i / j;39 }else{40 return 0;41 }42 }43 44 }
第三步:編寫測試方法,發布該服務。
1 package com.fx.test; 2 3 import javax.xml.ws.Endpoint; 4 5 import com.fx.inf.CalService; 6 import com.fx.inf.impl.CalServiceImpl; 7 8 public class CalServiceTest { 9 10 public static void main(String[] args) {11 System.out.println("--->Web Service Start");12 13 CalService cal = new CalServiceImpl();14 String address = "http://localhost:8888/cal";15 //發布此服務16 Endpoint.publish(address, cal);17 }18 19 }
運行該Test,發布成功:
第四步:開啟一個瀏覽器,輸入http://localhost:8888/cal?wsdl,得到一些資訊,這便是wsdl檔案:
借用CXF工具(CXF的bin目錄下有一些指令,可以將wsdl檔案自動轉換為Javabean檔案),將wsdl編譯為Javabean檔案:
第五步:將得到的檔案拷貝到一個新的Java項目下:
編寫測試類別:
1 package com.fx.test; 2 3 import com.fx.inf.CalService; 4 5 public class CalTest { 6 7 public static void main(String[] args) { 8 9 com.fx.inf.impl.CalService cal = new com.fx.inf.impl.CalService();10 11 CalService calSer = cal.getCalServiceImplPort();12 13 System.out.println("--->add:" + calSer.add(1, 2));14 System.out.println("--->sub:" + calSer.sub(1, 2));15 System.out.println("--->mul:" + calSer.mul(1, 2));16 System.out.println("--->div:" + calSer.div(1, 2));17 18 }19 20 }
運行,得到結果:
ps:這邊一定要注意,之前發布服務的那個java項目不要停掉,否則這邊會報錯:
Web Service 之JAX-WS 與CXF實現