@WebService public interface ServiceDemo{ public String say(String str); }
@WebService public class ServiceDemoImpl implements ServiceDemo{ public String say(String str) { return "Hello "+str; } }
JDK實現:html
public class Server { public static void main(String[] args) { System.out.println("web service start"); HelloWorld implementor = new ServiceDemoImpl (); String address = "http://192.168.1.103/serviceDemo"; Endpoint.publish(address, implementor); // JDK實現 System.out.println("web service started"); } }
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.1.5</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.5</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>3.1.5</version> </dependency>
CXF實現:java
public class Server { public static void main(String[] args) { System.out.println("web service start"); HelloWorld implementor = new ServiceDemoImpl (); String address = "http://192.168.1.103/serviceDemo"; JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); factoryBean.setAddress(address); // 設置暴露地址 factoryBean.setServiceClass(HelloWorld.class); // 接口類 factoryBean.setServiceBean(implementor); // 設置實現類 factoryBean.create(); System.out.println("web service started"); 1} }
bin
目錄下有wsdl2java,wsdl2java.bat,要使用wsdl2java命令,須要配置path。打開環境變量配置,將路徑:D:\apache-cxf-3.1.5\bin 加入。建立一個maven的JavaSE項目:ws-clientweb
找到ws-client項目的本地路徑: apache
在本地路徑下按shift加鼠標右鍵,打開命令窗口,輸入:wsdl2java address?wsdl。其中address是指服務端發佈的webservice接口瀏覽器
上一步中須要注意的是:不能把服務器端關閉。服務器
執行完以後,刷新ws-client,客戶端的代碼就生成了。frontend
關鍵代碼是ServiceDemoService.javamaven
編寫客戶端主類:Clientcode
public class Client { public static void main(String[] args) { ServiceDemoService service=new ServiceDemoService(); ServiceDemo serviceDemo=service.getServiceDemoPort(); System.out.println(serviceDemo.say("penelope")); } }