写点什么

Web Service 进阶 (二) 如何用 Apache TCPMon 来截获 SOAP 消息

  • 2022 年 6 月 04 日
  • 本文字数:850 字

    阅读完需:约 3 分钟

Web Service进阶(二)如何用Apache TCPMon来截获SOAP消息

WebService服务器和客户机之间会传递 SOAP 消息,有时我们需要得到这些消息以便调试,而Apache的 TCPMon 可以帮助我们做到这一点。TCPMon 的下载地址为:http://ws.apache.org/commons/tcpmon/download.cgi,找到 Binary Distribution,下载后会得到一个 tcpmon-1.0-bin.zip 的包,解开后进去\tcpmon-1.0-bin\build 目录,双击 tcpmon.bat 就可以执行程序了。这里有必要对 tcpmon 说明一下,它实际上是个 HTTP 代理,起一个消息转发的作用,监视的是转发出去的消息。最终,消息还是要送到具体的地址和端口,否则响应就不正确了。也就是说,TCPMon 是一个消息的二传手,它的前后都应该配置正确才行。



现在我们手头有一个 WebService 测试客户端,一个 WebService 工程运行在 Tomcat 服务器中,这就是 TCPMon 的两端,我们需要把它配置进去。首先,我们需要修改 Tomcat 的服务端口,你可以打开 Tomcat 目录下的 conf 目录下的 server.xml 文件,将 Connector 节点的 port 属性值从 8080 改成 8088(也可以是其他端口),如下所示:<Connector port="8088" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" />这样,Tomcat 服务器就在 8088 端口进行监听了。其次,我们需要让 TCPMon 在 8080 端口进行监听,并把收到的消息转发到 8088 端口去。我们找到刚才打开的 TCPMon 程序,找到 admin 选项卡,在 listen port #:右边的文本框中写入 8080,在 Target HostName 右边的文本框中输入 127.0.0.1,在 Tatget port 右边的文本框中输入 8088。如下图。


然后,再点击 add 按钮。一个名为 Port 8080 的选项卡会出现,这个界面将负责显示截获的 SOAP 消息。接下来就可以启动客户端程序,客户端会向原来一样,向 127.0.0.1 所在的 8080 端口送出 SOAP 消息,而这个消息会被 TCPMon 截获,然后转送到 127.0.0.1 所在的 8088 端口去,然后 Tomcat 会收到这个 SOAP 消息交给负责处理的 XFire Servlet,处理完的结果会通过 TCPMon 送回到客户端。在这个过程中,SOAP 消息就被完全截获并显示在 Port 8080 选项卡中了。如下图:



最后,当你的 SOAP 消息调试结束后,别忘了吧 Tomcat 的端口改回到 8080。


发布于: 刚刚阅读数: 7
用户头像

No Silver Bullet 2021.07.09 加入

岂曰无衣 与子同袍

评论

发布
暂无评论
Web Service进阶(二)如何用Apache TCPMon来截获SOAP消息_6月月更_No Silver Bullet_InfoQ写作社区