tcpmon相当于一个中间件,一般情况下,是客户端和服务端直接通信的,加入tcpmon之后,先让客户端把请求消息给tcpmon,再让tcpmon把消息传给服务端,服务端把响应消息传给客户端的时候,tcpmon把响应信息捕获出来。
打开tcpmon.bat,设置tcpmon的监听端口,如下图:
这里在Listen Port中,填写tcpmon的监听端口,在Listener中,填写WSDL服务的地址和端口,比如:WSDL服务URL为:http://localhost:9999/server?wsdl,这里Target Hostname填写localhost,Target Port填写9999(注:Listen Port和Target Port填写的端口不同一样),点击add,这里就会出现监听端口6666的窗口,如下图:
至此,tcpmon监听软件设置OK了。接口就准备测试
注:客户端发送请求消息要发给tcpmon,也就说是,端口要为tcpmon的监听端口
客户端代码:
package com.test.service;
import java.net.MalformedURLException;
import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
public class MyClient {
public static void main(String[] args) {
try {
// 创建访问wsdl服务地址的url
// URL url = new URL("http://localhost:9999/server?wsdl");
// 使用TCPMon(6666)截获
URL url = new URL("http://localhost:6666/server?wsdl");
// 通过QName指明服务的具体信息
QName qName = new QName("http://service.test.com/", "MyServiceImplService");
// 创建服务
Service service = Service.create(url, qName);
// 实现接口
IMyService ms = service.getPort(IMyService.class);
System.out.println(ms.add(12, 13));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
运行客户端后,在tcpmon监听软件中就可以捕获到消息了,如下图: