標籤:目錄 eclips over void gen client add 切換 ebs
一、Wsimport簡單介紹
Wsimport是jdk內建的。能夠依據wsdl文檔產生客戶點調用代碼的工具。
不管server端的webservice是用什麼語言寫的,都將在client產生java代碼。
server端用什麼語言寫的並不重要。
Wsimport位於JAVA_HOME/bin檔案夾下。Wsimport經常使用的參數有:
-d<檔案夾> --將產生.class檔案。
預設參數
-s<檔案夾> --將產生.java檔案。
-p<產生的新包名> --將產生類放於指定的包下
(Wsdlurl) –http://server.port/service?wsdl,webservice的wsdl地址,必須的參數
二、建立javaproject,並公布webservice
建立java project,命名為HelloCXF。匯入CXF相關的jar包。
在src檔案夾中建立com.hellocxf.service包,並建立People類,People類代碼為:
package com.hellocxf.service; import javax.jws.WebMethod;import javax.jws.WebService; @WebServicepublic interface People { publicString sayHello(String name); //@WebMethod(exclude=true) publicString makeFriend(String name);}
在src檔案夾中建立com.hellocxf.serviceImpl包,並建立Student類,Student代碼為:
package com.hellocxf.serviceImpl; import javax.jws.WebMethod;import javax.jws.WebService; import com.hellocxf.service.People; @WebServicepublic class Student implements People { @Override publicString sayHello(String name) { //TODO Auto-generated method stub System.out.println("Hello:"+name); returnname; } @WebMethod(exclude=true) @Override publicString makeFriend(String name) { //TODO Auto-generated method stub System.out.println("makefriend with "+name+" student"); returnname; } }
在src檔案夾建立com.hellocxf.servicePublice包。並建立ServicePublish類,用於公布webservice.ServicePublish代碼為:
package com.hellocxf.servicePublish; import javax.xml.ws.Endpoint; import com.hellocxf.service.People;import com.hellocxf.serviceImpl.Student; public class ServicePublish { publicstatic void main(String[] args) { //TODO Auto-generated method stub PeoplemService = new Student(); Stringaddress = "http://localhost:8080/People"; Endpoint.publish(address,mService); } }
執行ServicePublish類。公布webservice服務。
三、利用wsimport工具產生client調用服務代碼
在D盤建立目錄generatedCode
開啟cmd命令,切換到該檔案夾下
執行wsimport –s . http://localhost:8080/People?
wsdl,在generatedCode目錄下產生訪問服務的代碼。
把產生的程式碼中.class檔案刪除,僅僅保留.java的java類檔案。
四、建立clientproject,調用webservice服務
在eclipse中建立javaproject,命名為CXFClient
將第三部產生的.java類檔案總體拷貝到src檔案夾下,複製完畢之後其檔案夾結構例如以所看到的:
在src檔案夾下建立com.webservice.use包,在包中建立類ServiceUse.用於完畢對webservice的調用,代碼為:
package com.webservice.use; import com.hellocxf.serviceimpl.People;importcom.hellocxf.serviceimpl.StudentService; public class ServiceUse { publicstatic void main(String[] args) { //TODO Auto-generated method stub //<wsdl:servicename="StudentService"> StudentServicestudentService = new StudentService(); //<wsdl:portbinding="tns:StudentServiceSoapBinding"name="StudentPort"> //<wsdl:bindingname="StudentServiceSoapBinding" type="ns1:People"> Peoplepeople = studentService.getStudentPort(); StringserviceResult = people.sayHello("yinyuchun"); System.out.println(serviceResult); } }
類ServiceUse代碼中建立的service類型和調用的port、方法都是從wsdl擷取的。
基於jdk wsimport工具訪問外部webservice