TCPMon的使用

一、简介

TCPMon可以用于webservice服务中,用来查看详细的SOAP消息,官方解释如下:

TCPMon is a utility that allows the messages to be viewed and resent. It is very much useful as a debug tool. It has originally being part of Axis1 and now stands as an independent project.

下载地址:http://ws.apache.org/tcpmon/download.cgi

二、原理

webservice中,服务器和客户端交互是直接发送和接受消息,如下图所示:


TcpMon相当于一个拦截器,客户端与服务端交互的的soap消息先被它拦截,这样TcpMon就可以获得详细的soap消息格式,如下图所示:


三、使用

(1)从下载地址中下载TcpMon的binary包,解压后的包中,进入build目录中,windows系统中双击tcpmon.bat会出现一个图形化窗口,linux中执行tcpmon.sh(不管什么操作系统,前提是要安装好jdk):



(2)客户端访问地址修改

直接交互时,是使用地址http://localhost:8888/ws?wsdl获取webservice信息,使用TcpMon后,地址端口改为TcpMon配置的监听端口7777(端口可以自行配置,只要符合端口的限制):

package org.myws.service;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

public class WebPubClient {

    public static void main(String [] args) {
        
        try {
            URL url = new URL("http://localhost:7777/ws?wsdl");
            QName name = new QName("http://service.myws.org/", "MyWebImplService");
            
            Service service = Service.create(url, name);
            IMyWeb imyweb = service.getPort(IMyWeb.class);
            System.out.println(imyweb.add(10, 20));
            
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
}

(3)TcpMon消息查看

点击TcpMon的Port 7777(配置之后,就会生成),查看消息:


格式化的消息如下:


(4)协议XML格式修改

默认的WSDL规范,使得SOAP协议的数据传输媒介XML不便于阅读,比如上面的消息<arg0></arg0>,元素arg0,arg1都是WSDL规范默认的参数类型,可以通过修改webservice服务器端的接口,使得消息里面的XML适合阅读:

package org.myws.service;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

@WebService
public interface IMyWeb {

    @WebResult(name="addResult")
    public String add(@WebParam(name="a")int a, @WebParam(name="b")int b);
    
}

因为相对于修改SOAP消息传输数据的规范,需要重新发布服务,这样服务器和客户端才能根据对应的格式进行解析。重新帆布之后,可以看到WSDL定义的类型已经发生了变化:


查看TcpMon的消息格式,已经发生了变化,如下图



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值