web service 对外发布一个hello world接口(入门)

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

 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、对定义接口的实现

 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、发布对外提供的接口

 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格式的文档,这个就表示发布的成功。

 

 

客户端

 

 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包。

 

posted @ 2016-12-15 17:36  rabtor  阅读(282)  评论(0编辑  收藏  举报