CXF的第一个例子 -- 深入剖析

Web Service 的 Client 和 Server 端 之间的通信 分为下面4步骤:

 

1、client 向 server 发送一个get请求,希望得到 web service 的 wsdl 文件。

2、server 传给 client  wsdl 文件。

3、根据wsdl文件,client向server发送调用请求(soap)。至于传送soap请求 的 方式,可以是http ftp 等等

4、server 运算结束后,回传 soap response 给 client。

 

为了查看soap的请求和响应,可以在server端加入log拦截器,输出 请求响应。做法如下:

 

在MainServer.java中,加入

        JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
        factory.setServiceClass(HelloWorldImpl.class);
        factory.setAddress("http://localhost:8080/HelloWorld");
        factory.getInInterceptors().add(new LoggingInInterceptor());
        factory.getOutInterceptors().add(new LoggingOutInterceptor());

        Server server = factory.create();
        server.start();

其他不变,启动server,运行client代码,在server端的console可以看到:

 

----------------------------
ID: 1
Address: /HelloWorld
Encoding: UTF-8
Content-Type: text/xml; charset=UTF-8
Headers :

{

Content-Length=[193],

Host=[localhost:8080],

User-Agent=[Apache CXF 2.2.3],

connection=[keep-alive],

SOAPAction=[""],

Pragma=[no-cache],

Content-Type=[text/xml;

charset=UTF-8],

content-type=[text/xml; charset=UTF-8],

Cache-Control=[no-cache], Accept=[*/*]

}
Payload :

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

  <soap:Body>

    <ns2:sayHello xmlns:ns2="http://cxf.webservice.test/">

      <arg0>CY</arg0>

    </ns2:sayHello>

  </soap:Body>

</soap:Envelope>
--------------------------------------
 sayHello is called.
2009-8-20 20:40:18 org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
信息: Outbound Message
---------------------------
ID: 1
Encoding: UTF-8
Content-Type: text/xml
Headers : {}
Payload :

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

  <soap:Body>

    <ns2:sayHelloResponse xmlns:ns2="http://cxf.webservice.test/">

      <return>Hello CY !</return>

    </ns2:sayHelloResponse>

  </soap:Body>

</soap:Envelope>
--------------------------------------

 

从上面的输出,我们可以清楚的看到 soap协议是怎样包装信息进行传递的。soap中的各种标签显然从开始得到的wsdl文件中拿到。

 

 

JAX-WS 和 JAXB

Java API XML for Web Services

这里面定义了 和 web service 相关的 annotation的使用

Java API XML for Binding

这里面定义了 java对象 和 xml 之间的转换。有很多的转换规则 和 设定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值