您的位置:首页 > 其它

关于WebService技术的应用开发

2016-01-31 16:37 399 查看
这段时间自己一直在琢磨如何远程调用服务,我有个项目就是需要同步数据,通俗点就是把这个数据库里的数据搬到别的地方的数据库里,因此我使用WebService来调用服务。

在使用WebService需要以下几个步骤:

1.WebService的服务接口,供客户端调用。

@javax.jws.WebService        //WebService接口的注解

public class DoWebService {

       @Resource

       private WebServiceContext wsContext;

       public String doServiceFace(String name) {

                    return "你好,欢迎来到服务端,"+name;

       }

      public String getClientInfo() {

                    MessageContext mc = wsContext.getMessageContext();

                    HttpExchange exchange = (HttpExchange) mc .get(JAXWSProperties.HTTP_EXCHANGE);

                    InetSocketAddress isa = exchange.getRemoteAddress();

                    String IP = isa.getAddress().getHostAddress();

                    System.out.println("当前的IP:" + IP);

      }

 }

解析:我这里的代码是很简单的,在这里只需要讲几点:

a.在类的顶部加上@javax.jws.WebService  注解,声明这是个WebService的接口。

b.服务端接收数据,类型是一个String类型,这里关于网络传数据比较建议用XML。

c.在接收到数据时,进行处理,返回数据给客户端。同样也是String类型。

d.在这里这些都是需要被客户端调用的接口,接收到什么和返回什么都是通过这个入口来实现的。

e.处理数据的过程,我在项目中主要用到的是Spring+ibatis来进行数据同步。注意:使用类的时候,spring的注入应该用静态的注入方式。只需要将接收到的数据交给   Spring+ibatis来处理。也就是在这个接口里调用别的类来处理。

f.getClientInfo()为获取正在调用服务的客户端IP地址。可以用它来记录谁访问过我。

g.浏览器中执行http://localhost:8080/Service/DoWebService?WSDL 看是否页面上显示XML数据。

2.发布WebService。

     public class StartWebService extends ActionSupport {

              private static final long serialVersionUID = 1L;

             @Override

              public String execute() throws Exception {

                     System.out.println("程序已经开始执行了。。。。。");

                     Endpoint.publish("http://168.7.109.9:8080/Service/DoWebService", new DoWebService());

                     System.out.println("service success!");

                      return "success";

              }

}

我的这个是使用action来发布的,同样你也可以使用main方法来发布,都是可以的。在浏览器中通过请求执行下这段代码就可以了

3.客户端接入。

需要在cmd中使用wsimport来执行。

其命令是:wsimport -s C:\Users\cyl\workspace\WebServiceClient\src

                  -p com.xyyh.client -keep http://168.7.109.16:8080/Service/WebService?WSDL 必须服务端启用才可以执行。
a.C:\Users\cyl\workspace\WebServiceClient\src指的是客户端项目src的路径,将WebService接口类引入过来,供客户端调用。

b.-p com.xyyh.client在客户端的src下生成一个com.xyyh.client包,将WebService类全放在该包下。

c.-keep http://168.7.109.16:8080/Service/DoWebService ?WSDL  连接WebService的地址。这里面有几个参数是不一样的,DoWebService 为接口名称,ip地址是不同的。

4.客户端的调用。

public class test {

        public void dotest(){

                  DoWebService ws = new DoWebServiceService().getDoWebServicePort();

                  String hz = ws.doServiceFace("张三"); 

                  System.out.println(hz);

        }

}

5.最后的结果是:

    控制台输出:你好,欢迎来到服务端,张三


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息