WebService入门

                                                          关于webservice也只是刚刚入门,在这里记录下学习的过程!!!

一、首先,要学习webservice,就要搞清楚它的用途

       1.用于新旧系统之间的数据交互

       2.用于从一些提供数据资源的站点获取数据

       3.这点也是1的一个解释,不同编程语言实现的系统之间的数据交互

二、webservice实现的原理,其实很简单,就是http+xml

        通过http协议来传递xml数据,也就是我们所说的SOAP(简单对象访问协议)协议。

三、我觉得webservice最主要的内容是对wsdl文档的理解

        所谓wsdl就是webservice 定义语言,是对服务器端提供的数据格式的规范,客户端根绝wsdl文档可以实现与服务器端的交互;

四、现在先来做一个最简单的demo,通过这个demo简单了解一下webservice的一些具体细节

        1.创建java工程,创建一个服务器端接口WsServer
            import javax.jws.WebMethod;
            import javax.jws.WebService;

           @WebService
           public interface WsServer {
              @WebMethod
              public String sayHello(String name);
           }

          2.创建WsServer的实现
          import com.cxf.server.WsServer;
          public class WsServerImpl implements WsServer {
           @Override
            public String sayHello(String name) {
               // TODO Auto-generated method stub
                 System.out.println("Hello "+name);
                return name;
             }
          }

        3.发布webservice

         public static void main(String[] args) {
            Endpoint publish = Endpoint.publish("http://192.168.27.57:8080/webservice", new WsServerImpl());
         }

        当发不完之后,在浏览器中输入http://192.168.27.57:8080/webservice?wsdl可以看到生成的wsdl文档,下面就需要根据wsdl文档生成客户端代码,向客户端发送请求并获得相应

        4.生成客户端代码,生成客户端代码的时候可以使用jdk中的wsimport 命令 ,具体做法如下:

          创建一个客户端项目,然后进入dos窗口,进入到客户端项目的src目录下 执行

             wsimport -keep  http://192.168.27.57:8080/webservice?wsdl 这个命令

        就可以生成客户端代码,刷新src目录就可以了,然后开始写客户端访问webservice服务端代码

      5.客户端访问webservice服务端代码:

          import com.cxf.server.impl.WsServer;
         import com.cxf.server.impl.WsServerImplService;
         public class ClientTest {
            public static void main(String[] args) {
                  WsServerImplService wsserver= new WsServerImplService();
                  WsServer wsServerImplPort = wsserver.getWsServerImplPort();
                 System.out.println(wsServerImplPort.sayHello("jack!"));
             }
         }

         说明: 这个访问服务端的代码是根据wsdl文件写的,当webservice发布成功之后在浏览器中看到的wsdl文件如下:(这个是在cxf   webservice的一个框架 生成的wsdl文件与jdk直接生成的wsdl文档会有所不同)

             <wsdl:definitions name="WsServerImplService" targetNamespace="http://impl.server.cxf.com/">

              <wsdl:import location="http://192.168.27.57:8080/webservice?wsdl=WsServer.wsdl" namespace="http://server.cxf.com/"> </wsdl:import>

           <wsdl:binding name="WsServerImplServiceSoapBinding" type="ns1:WsServer">

            <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

            <wsdl:operation name="sayHello">

           <soap:operation soapAction="" style="document"/>

           <wsdl:input name="sayHello"><soap:body use="literal"/></wsdl:input>

            <wsdl:output name="sayHelloResponse">

            <soap:body use="literal"/></wsdl:output>

           </wsdl:operation>

           </wsdl:binding>

           <wsdl:service name="WsServerImplService">

           <wsdl:port binding="tns:WsServerImplServiceSoapBinding" name="WsServerImplPort">

           <soap:address location="http://192.168.27.57:8080/webservice"/>

           </wsdl:port>

           </wsdl:service>

           </wsdl:definitions>

          在客户端要创建的服务对象名字,与wsdl文件中的service标签的name属性的值一致,然后通过webservice对象可以得到通信对象,之后就可以调用webservice中的相应的方法,实现以webservice后台程序的交互了。

       关于wsdl文档的说明和其它的内容以后有时间再说吧,先记录这些

     

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值