web service对外发布一个hello world接口
https://www.yqxbc.com win10系统 发布时间:2015-11-06 00:00 来源:一起学编程 浏览:加载中

1、写一个需要发布的接口

Java代码  
  1. package com.hb;  
  2.   
  3. import javax.jws.WebParam;  
  4. import javax.jws.WebService;  
  5.   
  6. @WebService  
  7. public interface IService {  
  8.   
  9.     public void hello(@WebParam(name="username") String username);  
  10. }  

 

备注: 一定要在接口名称上面用 @WebService 注解标示,参数@WebParam(name="username")只是说明在wsdl中指明参数的名字是username

 

2、对定义接口的实现

Java代码  
  1. package com.hb;  
  2.   
  3. import java.util.Date;  
  4. import javax.jws.WebParam;  
  5. import javax.jws.WebService;  
  6.   
  7. @WebService(endpointInterface="com.hb.IService")  
  8. public class ServiceImp implements IService{  
  9.   
  10.     @Override  
  11.     public void hello(@WebParam(name = "username") String username) {  
  12.         System.out.println("hello " + username + " now is " + new Date());  
  13.     }  
  14.   
  15. }  

 

备注: 一定要在接口名称上面用 @WebService 注解标示 ,里面一定要标注它对外的接口,在后面的客户端调用会体现出来。

 

3、发布对外提供的接口

Java代码  
  1. package com.hb;  
  2.   
  3. import javax.xml.ws.Endpoint;  
  4.   
  5. public class ServiceMain {  
  6.   
  7.     public static void main(String[] args) {  
  8.         String address = "http://172.16.32.72:7777/hb";  
  9.         Endpoint.publish(address, new ServiceImp());  
  10.         System.out.println("发布消息成功");  
  11.     }  
  12.   
  13. }  

 

在地址栏中输入  http://172.16.29.89:7777/hb?wsdl,就会出现一系列xml格式的文档,这个就表示发布的成功。

 

客户端

 

Java代码  
  1. package com.hb;  
  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 Client {  
  10.   
  11.     /** 
  12.      * @param args 
  13.      * @throws MalformedURLException  
  14.      */  
  15.     public static void main(String[] args) throws MalformedURLException {  
  16.         // TODO Auto-generated method stub  
  17.         //创建访问wsdl服务地址的url  
  18.         URL url = new URL("http://172.16.32.72:7777/hb?wsdl");  
  19.         //通过Qname指明服务的具体信息  
  20.         /* 
  21.          * 第一个参数:接口的包名称,反序 
  22.          * 第二个参数:实现类名+Service 
  23.          * */  
  24.         QName qname = new QName("http://hb.com/","ServiceImpService");  
  25.         //创建服务  
  26.         Service service =  Service.create(url, qname);  
  27.         //实现接口  
  28.         IService iservice = service.getPort(IService.class);  
  29.         //以上服务有问题,依然依赖于IMyServie接口  
  30.         iservice.hello("huangbiao");  
  31.           
  32.     }  
  33.   
  34. }  
 

 

备注:QName qname = new QName("http://hb.com/","ServiceImpService");两个参数分别对应上图中的targetNamespace 和 name

 

如果在实现对外提供的接口类中没有@WebService(endpointInterface="com.hb.IService"),则会提示不认识这个接口。

 

 上面全部操作不需要引入任何外部jar包。