WebService—快速实现一个基于JAX-WS的WebService项目(一)

来源:互联网 发布:游戏无线鼠标推荐 知乎 编辑:程序博客网 时间:2024/04/30 03:37

转载自:http://blog.csdn.net/linjingj/article/details/13761465 (表示感谢!!!)

本篇主要讲解了基于JAX-WS的WebService项目的快速实现,项目文件如下:

一、服务器的建立

(1)创建接口

IMyService.java

[java] view plaincopy
  1. package org.zttc.service;  
  2.   
  3. import javax.jws.WebParam;  
  4. import javax.jws.WebResult;  
  5. import javax.jws.WebService;  
  6. import javax.jws.soap.SOAPBinding;  
  7. import javax.jws.soap.SOAPBinding.Style;  
  8.   
  9. @WebService  
  10. /*@SOAPBinding(style=Style.RPC) 
  11.  * style:定义发送到WebService的消息和从WebService发送的消息的编码样式。Document和RPC两种形式,默认document。*/  
  12. public interface IMyService {  
  13.   
  14.     @WebResult(name="addResult")  
  15.     public int add(@WebParam(name="a")int a, @WebParam(name="b")int b);  
  16.       
  17.     @WebResult(name="minusResult")  
  18.     public int minus(@WebParam(name="a")int a, @WebParam(name="b")int b);  
  19.       
  20.     @WebResult(name="loginUser")  
  21.     public User login(@WebParam(name="username")String username, @WebParam(name="password")String password);  
  22. }  


(2)创建实现类

MyServiceImpl.java

[java] view plaincopy
  1. package org.zttc.service;  
  2.   
  3. import javax.jws.WebService;  
  4.   
  5. @WebService(endpointInterface="org.zttc.service.IMyService")  
  6. public class MyServiceImpl implements IMyService {  
  7.   
  8.     @Override  
  9.     public int add(int a, int b) {  
  10.         System.out.println(a + "+" + b + "=" + (a + b));  
  11.         return a+b;  
  12.     }  
  13.   
  14.     @Override  
  15.     public int minus(int a, int b) {  
  16.         System.out.println(a + "-" + b + "=" + (a - b));  
  17.         return a-b;  
  18.     }  
  19.   
  20.     @Override  
  21.     public User login(String username, String password) {  
  22.         System.out.println(username + "is logining");  
  23.         User user = new User();  
  24.         user.setId(1);  
  25.         user.setUsername(username);  
  26.         user.setPassword(password);  
  27.           
  28.         return user;  
  29.     }  
  30. }  

 

(3)发布服务

SEI: Service Endpoint Interface

SIB: Service Implemention Bean 

MyServer.java

[java] view plaincopy
  1. package org.zttc.service;  
  2.   
  3. import javax.xml.ws.Endpoint;  
  4.   
  5. public class MyServer {  
  6.   
  7.     /** 
  8.      * http://localhost:8887/ns?wsdl  
  9.      * @param args 
  10.      */  
  11.     public static void main(String[] args) {  
  12.         String address = "http://localhost:8887/ns";  
  13.         Endpoint.publish(address, new MyServiceImpl());  
  14.     }  
  15.   
  16. }  

 

运行MyServer中的main()方法,发布服务,可通过http://localhost:8887/ns?wsdl查看wsdl文件

二、客户端的建立

首先,我们在本地项目中创建一个客户端,测试访问,如下TestClient.java

[java] view plaincopy
  1. package org.zttc.service;  
  2.   
  3. import java.net.MalformedURLException;  
  4. import java.net.URL;  
  5.   
  6. import javax.xml.namespace.QName;  
  7. import javax.xml.ws.Service;  
  8.   
  9. public class TestClient {  
  10.   
  11.     public static void main(String[] args) {  
  12.         try {  
  13.             //创建访问WSDL服务地址的URL  
  14.             URL url = new URL("http://localhost:8888/ns?wsdl");  
  15.             //通过QName指明服务的具体信息(<MyServiceImplService xmlns="http://service.zttc.org/">)  
  16.             QName sname = new QName("http://service.zttc.org/""MyServiceImplService");  
  17.             //创建服务  
  18.             Service service = Service.create(url, sname);  
  19.             //实现接口  
  20.             IMyService ms = service.getPort(IMyService.class);  
  21.             System.out.println(ms.add(1233));  
  22.             //以上服务有问题,依然依赖于IMyService接口  
  23.         } catch (MalformedURLException e) {  
  24.             e.printStackTrace();  
  25.         }  
  26.     }  
  27. }  

实现过程中,我们会发现,实现接口的时候,IMyService ms = service.getPort(IMyService.class);依然依赖于IMyService接口,也就是依然依赖于Java代码,不能满足WebService异构平台之间的交互(跨语言、跨平台)。

0 0
原创粉丝点击