基于通信层的HTTP和SOAP消息跟踪

在通信层,针对SOAP和HTTP消息的跟踪有多种方法可选。

tcpmon程序是一个可以自由下载和免费使用的可执行jar文件。这个程序带有用户界面,因此很容易上手。tcpmon只需要3个设置:服务名称,默认是“localhost“;服务端口,比如前面例子TimeServer在发布服务时使用的9876端口;还有一个本地监听端口,默认是8080,tcpmon用来监听HTTP请求的端口。启动tcpmon后,将前面例子中TimeClient需要发送的服务请求端口由9876更改为8080。tcpmon拦截客户端和服务器之间的HTTP通信内容并将其显示在用户界面中。如图:

基于通信层的HTTP和SOAP消息跟踪_第1张图片

基于通信层的HTTP和SOAP消息跟踪_第2张图片

基于通信层的HTTP和SOAP消息跟踪_第3张图片

其实还有许多开源的和商业产品可用来进行对SOAP通信的跟踪。在这些产品或工具中,有几个值得我们了解,其中有SOAPscope、NetSniffer和Wireshark。tcpdump普遍应用在Unix类型的操作系统中,Linux和OS X操作系统中往往也会有这个程序,在windows操作系统中常用的工具是WinDump。除了免费之外,tcpdump一个明显的好处就是对于客户端和web服务来说,不需要修改任何代码即可以完成对SOAP和HTTP通信的跟踪。tcpdump工具将消息输出到标准输出设备。与之伴随出现的tcptrace工具可以用来对输出的消息进行分析。下面将简要地介绍tcpdump的强大功能和灵活性。

在一些Unix类型的操作系统中, tcpdump程序必须使用超级用户权限,才能执行。tcpdump可设置不同参数用来完成不同的跟踪需要。下面是一个简单的例子:

% tcpdump -i lo -A -s 1024 -l 'dst host localhost and port 9876' | tee dump.log

实际上tcpdump可以拦截通过它出去的任何网络接口的通信包。通过参数 -D运行tcpdump,会显示其可以支持的网络接口列表,-D命令类似于Unix类型的操作系统中ipconfig -a命令。在上面这个例子中,标识/值对 -i lo告诉tcpdump从lo接口中拦截通信包,lo在Unix类型的操作系统中是localhost网络接口的缩写。标志 -A告诉tcpdump,截获的通信包以ASCII方式标示,由于web包通常都是文本类型,因此以这种方式显示容易阅读。-s 1024标识用来设置每次抓包长度,每一个拦截包所须要获取的字节数。标识 -l标识将包强制为每行输出,方便阅读,“|”标示将标准输出重定向到本地文件dump.log中。最后,看下面这个表示式:

'dst host localhost and port 9876'

它表示为一个过滤器,只针对地址localhost和端口9876进行通信包的拦截。

你可能感兴趣的:(java-web服务)