WebServices中SOAP消息的查看

1.    在学习WebServices时,经常想知道服务端与客户端之间传递的SOAP消息到底是怎样的,慢慢的找到了2种方式来查看SOAP消息。

2.    测试环境:Tomcat、Axis1.4、HelloWorld服务端

3.    WebserviceStudio可以很方便的查看一个webservices,然后可以手工传递参数,点击invoke按钮,可以查看请求、响应的SOAP消息。

 

 

优点:可以很方便的对webservice做一些简单的测试,并查看SOAP消息的内容。

缺点:手工输入的参数只能是数字或者字符串,不能是复杂的数据类型;因为它只能单独的作为一个工具使用,而不能跟应用程序结合,所以它不能实时监控webservice的每次请求、响应的SOAP消息内容。

4.    Axis中可以使用SOAPMonitor来监控webservice每次被请求时的SOAP消息的内容。

(1) Axis在网页中使用Applet形式显示页面的,需要去到axis目录下,编译SOAPMonitorApplet.java文件

 

javac -classpath %AXIS_HOME%\lib\axis.jar SOAPMonitorApplet.java

将生成的.class文件(7)放在axis的根目录下。

 

(2) 将Axis自带的SOAPMonitorService服务发送到Axis中,编写一个部署文件deploy_monitor.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

    <handler name="soapmonitor" type="java:org.apache.axis.handlers.SOAPMonitorHandler">

        <parameter name="wsdlURL" value="/axis/SOAPMonitorService-impl.wsdl"/>

        <parameter name="namespace" value="http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl"/>

        <parameter name="serviceName" value="SOAPMonitorService"/>

        <parameter name="portName" value="Demo"/>

    </handler>

    <service name="SOAPMonitorService" provider="java:RPC">

        <parameter name="allowedMethods" value="publishMessage"/>

        <parameter name="className" value="org.apache.axis.monitor.SOAPMonitorService"/>

        <parameter name="scope" value="Application"/>

    </service>

</deployment>

java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient deploy_monitor.wsdd –p 8088

(3) 在HelloWorld这个服务的部署描述文件中,添加上面的soapmonitor这个Handler,并重新部署到Axis中

<deployment xmlns="http://xml.apache.org/axis/wsdd/"

    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

    <service name="HelloWorld" provider="java:RPC">

       <parameter name="className"        value="cn.koma.service.HelloWorld" />

       <parameter name="allowedMethods"   value="*" />

       <parameter name="scope"            value="application" />

       <requestFlow>

           <handler type="soapmonitor"/>

       </requestFlow>

       <responseFlow>

           <handler type="soapmonitor"/>

       </responseFlow>

    </service>

</deployment>

(4) 在浏览器中打开SOAPMonitor的监控页面

http://localhost:8088/axis/SOAPMonitor

(5) 编写访问WebService的客户端,并执行它。

import javax.xml.namespace.QName;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

public class TestAxis

{

    public static void main(String[] args)

    {

       try

       {

           // 请求的webservice地址

           String endpoint = "http://localhost:8088/axis/services/HelloWorld";

           Service service = new Service();

           Call call = (Call)service.createCall();

           call.setTargetEndpointAddress(endpoint);

           // 请求的方法名

           call.setOperationName(new QName("http://service.koma.cn", "sayHello"));

           // 传递参数、执行请求操作,并返回结果

           String rtnMsg = (String)call.invoke(new Object[]{"test"});

           System.out.println(rtnMsg);

       } catch (Exception e){e.printStackTrace();}

    }

}

(6) 查看浏览器监控页面中,请求的SOAP消息内容

 

优点:可以监控每一个请求,程序中可以传递很复杂的参数类型。

缺点:初学者可能会觉得部署有些困难,不过去看看axis的文档或者去网上找一下资料,很快就可以部署成功。

5.     

 

posted on 2010-03-12 22:42  TroyZ  阅读(2900)  评论(0编辑  收藏  举报