﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Java天空 任我翱翔-随笔分类-Webservice</title><link>http://www.blogjava.net/persister/category/15329.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 11 Sep 2010 09:51:19 GMT</lastBuildDate><pubDate>Sat, 11 Sep 2010 09:51:19 GMT</pubDate><ttl>60</ttl><item><title>WebService &amp; Axis1.4学习总结</title><link>http://www.blogjava.net/persister/archive/2010/08/05/328035.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Thu, 05 Aug 2010 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/08/05/328035.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/328035.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/08/05/328035.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/328035.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/328035.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/persister/archive/2010/08/05/328035.html'>阅读全文</a><img src ="http://www.blogjava.net/persister/aggbug/328035.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-08-05 11:58 <a href="http://www.blogjava.net/persister/archive/2010/08/05/328035.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCPMornitor监控web service的请求和相应内容</title><link>http://www.blogjava.net/persister/archive/2010/08/04/327906.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Wed, 04 Aug 2010 02:52:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2010/08/04/327906.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/327906.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2010/08/04/327906.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/327906.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/327906.html</trackback:ping><description><![CDATA[测试web services应用时，有时候会发现服务器端的反应不是预期的，这个时候查看soap request的内容是非常有用的，TCPMornitor是个非常好的帮手，能够查看发送的request内容和response内容。在Axis里面已经自带了，编写如下一个3行的tcpmonitor.bat文件：<br />
<br />
<div style="background-color: rgb(238, 238, 238); font-size: 13px; border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 128);">1</span>&nbsp;<span style="color: rgb(0, 0, 0);">set&nbsp;Axis_Lib</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">D:\workspace\TestOFBizServices\lib<br />
</span><span style="color: rgb(0, 128, 128);">2</span>&nbsp;<span style="color: rgb(0, 0, 0);">set&nbsp;Java_Cmd</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">java&nbsp;</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">Djava.ext.dirs</span><span style="color: rgb(0, 0, 0);">=%</span><span style="color: rgb(0, 0, 0);">Axis_Lib</span><span style="color: rgb(0, 0, 0);">%</span><span style="color: rgb(0, 0, 0);"><br />
</span><span style="color: rgb(0, 128, 128);">3</span>&nbsp;<span style="color: rgb(0, 0, 0);">%</span><span style="color: rgb(0, 0, 0);">Java_Cmd</span><span style="color: rgb(0, 0, 0);">%</span><span style="color: rgb(0, 0, 0);">&nbsp;org.apache.axis.utils.tcpmon</span></div>
<br />
启动后，填入相关的Listen port，host和port。host和port是实际响应的主机地址和端口。listen port是监听端口，所有发送到listen port的请求都会转发给host和port。所以在测试的时候，必须将请求的端口改成listen port这样才能监听你的请求内容。<br />
<br />
<img src ="http://www.blogjava.net/persister/aggbug/327906.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2010-08-04 10:52 <a href="http://www.blogjava.net/persister/archive/2010/08/04/327906.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AXIS学习总结</title><link>http://www.blogjava.net/persister/archive/2008/10/21/235735.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Tue, 21 Oct 2008 09:50:00 GMT</pubDate><guid>http://www.blogjava.net/persister/archive/2008/10/21/235735.html</guid><wfw:comment>http://www.blogjava.net/persister/comments/235735.html</wfw:comment><comments>http://www.blogjava.net/persister/archive/2008/10/21/235735.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/persister/comments/commentRss/235735.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/persister/services/trackbacks/235735.html</trackback:ping><description><![CDATA[前段时间，系统需要对外发布web service接口，采用的是Axis，主要是参考网上的一篇文章，mornitor和自定义类型是自己加上的：<br />
<br />
<p>　　<strong>一、Axis环境的安装</strong></p>
<p>　　1、安装环境 J2SE SDK，Tomcat，eclipse。</p>
<p>　　2、到 <a href="http://xml.apache.org/" target="_blank">http://xml.apache.org</a>&nbsp;网站下载Axis安装包。</p>
<p>　　3、将Axis相关包文件放在WEB-INF\lib目录下，需要另外下载activation.jar。</p>
<p>　　Axis支持三种web service的部署和开发，分别为：</p>
<p>　　1、Dynamic Invocation Interface （DII）</p>
<p>　　2、Dynamic Proxy方式</p>
<p>　　3、Stubs方式</p>
<p>　　前两种方式我就不介绍了，同事告诉我他们自己都不使用前两种方式，他们建议我们使用Stubs方式，因此我就主要就介绍一下第三种方式。注意，我自己的Java源代码是放在D：\workspace\test\目录下，Axis相关包文件放在D：\workspace\test\WEB-INF目录下。</p>
<p>　　<strong>二、编写wsdd发布web服务，编写stub client访问web服务</strong></p>
<p>　　1、编写服务端程序server，SayHello.java，编译server.SayHello.java</p>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">package</span><span style="color: #000000;">&nbsp;server;<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;SayHello<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;String&nbsp;getName(String&nbsp;name)<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">hello&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">+</span><span style="color: #000000;">name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
<p>&nbsp;</p>
<p>　　2、编写wsdd文件</p>
<p>　　deploy.wsdd文件内容如下：</p>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">deployment&nbsp;xmlns</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://xml.apache.org/axis/wsdd/</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;xmlns:java</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://xml.apache.org/axis/wsdd/providers/java</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">service&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">SayHello</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;provider</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">java:RPC</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">className</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">server.SayHello.getName</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">allowedMethods</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">*</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">service</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">deployment</span><span style="color: #000000;">&gt;</span></div>
<p>&nbsp;</p>
<p>　　3、发布服务：</p>
<p>　　编辑一个deploy.bat，Axis_Lib为axis.jar路径。内容如下（注意目录名中不要包含空格）：</p>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">set&nbsp;Axis_Lib</span><span style="color: #000000;">=</span><span style="color: #000000;">D:\workspace\test\WEB</span><span style="color: #000000;">-</span><span style="color: #000000;">INF\lib<br />
set&nbsp;Java_Cmd</span><span style="color: #000000;">=</span><span style="color: #000000;">java&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">Djava.ext.dirs</span><span style="color: #000000;">=%</span><span style="color: #000000;">Axis_Lib</span><span style="color: #000000;">%</span><span style="color: #000000;"><br />
set&nbsp;Axis_Servlet</span><span style="color: #000000;">=</span><span style="color: #000000;">http:</span><span style="color: #008000;">//</span><span style="color: #008000;">localhost:8080/test/servlet/AxisServlet</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">%</span><span style="color: #000000;">Java_Cmd</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;org.apache.axis.client.AdminClient&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">l</span><span style="color: #000000;">%</span><span style="color: #000000;">Axis_Servlet</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;deploy.wsdd</span></div>
<p>&nbsp;</p>
<p>　　执行这个批处理文件，执行这个批处理之前，tomcat必须启动起来。如果处理成功的话，然后将class文件拷贝到axis的axis"WEB-INF"classes目录中，然后访问<a href="http://localhost:8080/test/services">http://localhost<font color="#000000">:</font>8080/test/services</a> 就会显示服务列表。</p>
<p>　　4、生成客户端client stub文件</p>
<p>　　在浏览器上访问服务器端的服务，可以下载到WSDL文件，通过Axis的相关工具，可以自动从WSDL文件中生成Web Service的客户端代码。</p>
<p>　　编写一个WSDL2Java.bat文件，其内容如下：</p>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">set&nbsp;Axis_Lib</span><span style="color: #000000;">=</span><span style="color: #000000;">D:\workspace\test\WEB</span><span style="color: #000000;">-</span><span style="color: #000000;">INF\lib<br />
set&nbsp;Java_Cmd</span><span style="color: #000000;">=</span><span style="color: #000000;">java&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">Djava.ext.dirs</span><span style="color: #000000;">=%</span><span style="color: #000000;">Axis_Lib</span><span style="color: #000000;">%</span><span style="color: #000000;"><br />
set&nbsp;Output_Path</span><span style="color: #000000;">=</span><span style="color: #000000;">D:\workspace\test\src<br />
set&nbsp;Package</span><span style="color: #000000;">=</span><span style="color: #000000;">server.SayHello<br />
</span><span style="color: #000000;">%</span><span style="color: #000000;">Java_Cmd</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;org.apache.axis.wsdl.WSDL2Java&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">o</span><span style="color: #000000;">%</span><span style="color: #000000;">Output_Path</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">p</span><span style="color: #000000;">%</span><span style="color: #000000;">Package</span><span style="color: #000000;">%</span><span style="color: #000000;">&nbsp;SayHello.wsdl</span></div>
<p>&nbsp;</p>
<p>　　执行这个批处理文件就可以生成client stub.</p>
<p>　　生成的stub client文件列表为：SayHello.java，SayHelloService.java，SayHelloServiceLocator.java，SayHelloSoapBindingStub.java .</p>
<p>　　5、编写客户端程序，编译并执行</p>
<p>　　下面是一段junit测试客户端代码。</p>
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;java.net.URL;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;junit.framework.Test;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;junit.framework.TestCase;<br />
</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;junit.framework.TestSuite;<br />
<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;TestWSClient&nbsp;</span><span style="color: #0000ff;">extends</span><span style="color: #000000;">&nbsp;TestCase&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;TestWSClient(String&nbsp;string)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">super</span><span style="color: #000000;">(string);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;testSayHelloClient()&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;Exception&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SayHelloService&nbsp;service&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SayHelloServiceLocator();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SayHello_PortType&nbsp;client&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;service.getSayHello()&nbsp;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;retValue&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;client.getName(</span><span style="color: #000000;">"</span><span style="color: #000000;">jack</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertEquals(</span><span style="color: #000000;">"</span><span style="color: #000000;">hello&nbsp;jack</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;retValue);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}</span></div>
<p><strong>&nbsp;&nbsp;&nbsp; 三、SOAP监控</strong></p>
<p>
SOAP Monitor allows for the monitoring of SOAP requests and responses via
a web browser with Java plug-in 1.3 or higher. For a more comprehensive
explanation of its usage, read <a href="file:///D:/history/study/web%20services/axis-1_4/docs/user-guide.html#soapmon">Using the
SOAP Monitor</a> in the User's Guide.
</p>
<p>
By default, the SOAP Monitor is not enabled. The basic steps for enabling
it are compiling the SOAP Monitor java applet, deploying the SOAP Monitor
web service and adding request and response flow definitions for each monitored
web service. In more detail:
</p>
<ol>
    <li> Go to $AXIS_HOME/webapps/axis (or %AXIS_HOME%"webapps"axis)
    and compile SOAPMonitorApplet.java.
    <blockquote> <span style="font-weight: bold;">On Windows</span>
    <code><br />
    javac -classpath %AXIS_HOME%"lib"axis.jar SOAPMonitorApplet.java</code><br />
    <br />
    <span style="font-weight: bold;">On Unix</span>
    <code><br />
    javac -classpath $AXIS_HOME/lib/axis.jar SOAPMonitorApplet.java</code><br />
    </blockquote>
    Copy all resulting class files (i.e. SOAPMonitorApplet*.class) to the root
    directory of the web application using the SOAP Monitor
    (e.g. .../tomcat/webapps/axis) 这一步axis做好了，不需要copy了。</li>
    <li> Deploy the SOAPMonitorService web service with the admin client and the
    deploy-monitor.wsdd file (shown below).
    <blockquote>Go to the directory deploy-monitor.wsdd is located and execute
    the command below. The command assume that /axis is the intended
    web application and it is available on port 8080.<br />
    <strong>On Windows</strong> <br />
    <code>java -cp %AXISCLASSPATH%
    org.apache.axis.client.AdminClient
    -lhttp://localhost:8080/axis/services/AdminService deploy-monitor.wsdd<br />
    </code>&nbsp;<strong><br />
    On UNIX</strong> <br />
    <code>java -cp $AXISCLASSPATH
    org.apache.axis.client.AdminClient <br />
    -lhttp://localhost:8080/axis/services/AdminService deploy-monitor.wsdd</code> </blockquote>
    <span style="font-weight: bold;">SOAPMonitorService Deployment Descriptor (deploy-monitor.wsdd)</span>
    <div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
    <br />
    Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
    http://www.CodeHighlighter.com/<br />
    <br />
    --><span style="color: #000000;">&lt;</span><span style="color: #000000;">deployment&nbsp;xmlns</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://xml.apache.org/axis/wsdd/</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
    xmlns:java</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://xml.apache.org/axis/wsdd/providers/java</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
    </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">handler&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">soapmonitor</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
    &nbsp;type</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">java:org.apache.axis.handlers.SOAPMonitorHandler</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
    &nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">wsdlURL</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
    &nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">/axis/SOAPMonitorService-impl.wsdl</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
    &nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">namespace</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
    &nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://tempuri.org/wsdl/2001/12/SOAPMonitorService-impl.wsdl</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
    </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">serviceName</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">SOAPMonitorService</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
    </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">portName</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">Demo</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
    </span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">handler</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
    </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">service&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">SOAPMonitorService</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;provider</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">java:RPC</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
    </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">allowedMethods</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">publishMessage</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
    </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">className</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
    &nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">org.apache.axis.monitor.SOAPMonitorService</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
    </span><span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">scope</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">Application</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
    &nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">service</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
    &nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">deployment</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp; </span> </div>
    </li>
    <li>For each service that is to be monitored, add request and response flow definitions
    to the service's deployment descriptor and deploy (or redeploy) the service. The
    <span style="font-weight: bold;">requestFlow</span> and <span style="font-weight: bold;">
    responseFlow</span> definitions follow the start tag of the <span style="font-weight: bold;">
    &lt;service&gt;</span> element. If a service is already deployed, undeploy it and deploy
    it with the modified deployment descriptor. An example is shown below:
    <pre>...<br />
    <br />
    &lt;service name="xmltoday-delayed-quotes" provider="java:RPC"&gt;<br />
    &lt;requestFlow&gt;<br />
    &lt;handler type="soapmonitor"/&gt;<br />
    &lt;/requestFlow&gt;<br />
    &lt;responseFlow&gt;<br />
    &lt;handler type="soapmonitor"/&gt;<br />
    &lt;/responseFlow&gt;<br />
    ...</pre>
    </li>
    <li>With a web browser, go to http[s]://host[:port][/webapp]/SOAPMonitor
    (e.g. http://localhost:8080/axis/SOAPMonitor) substituting the correct values
    for your web application. This will show the SOAP Monitor applet for viewing service
    requests and responses. Any requests to services that have been configured
    and deployed correctly should show up in the applet.进行上面的测试的时候，就可以看到request和response的内容。</li>
</ol>
<p><strong>&nbsp;&nbsp;&nbsp; 四、自定义类型</strong></p>
<p><strong>&nbsp;&nbsp;&nbsp; </strong>如果返回类型为一个自定义类型<strong>：</strong></p>
<p><strong>&nbsp;</strong></p>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;test.Person;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;SayHello&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;Person&nbsp;getName(String&nbsp;name,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;age)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Person(name,age);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Person{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;String&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;age;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;Person(String&nbsp;name,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;age)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.age&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;age;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;String&nbsp;getName()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;setName(String&nbsp;name)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.name&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;name;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;getAge()&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;age;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;setAge(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;age)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.age&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;age;<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
}</span></div>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 那么在发布的时候，就需要在发布文件中指明：</p>
<p>&nbsp;&nbsp;&nbsp; <br />
</p>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&lt;</span><span style="color: #000000;">deployment&nbsp;xmlns</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://xml.apache.org/axis/wsdd/</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;xmlns:java</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://xml.apache.org/axis/wsdd/providers/java</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">service&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">SayHello</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;provider</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">java:RPC</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">requestFlow</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">handler&nbsp;type</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">soapmonitor</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">requestFlow</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">responseFlow</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">handler&nbsp;type</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">soapmonitor</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">responseFlow</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">className</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">SayHello</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">allowedMethods</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">*</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
&nbsp;</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">service</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">beanMapping&nbsp;qname</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">myNS:Person</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;xmlns:myNS</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">urn:SayHello</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;languageSpecificType</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">java:Person</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #000000;">&lt;/</span><span style="color: #000000;">deployment</span><span style="color: #000000;">&gt;</span></div>
<p>&nbsp;</p>
<p>&nbsp; 然后将Person类也copy到应用的classes文件下面，然后将wsdl文件下载下来，转化成java文件，这样调用的时候就可以直接得到Person对象了：</p>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;testSayHelloClient()&nbsp;</span><span style="color: #0000ff;">throws</span><span style="color: #000000;">&nbsp;Exception&nbsp;{<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SayHelloService&nbsp;service&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;SayHelloServiceLocator();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SayHello_PortType&nbsp;client&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;service.getSayHello()&nbsp;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test.Person&nbsp;person&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;client.getName(</span><span style="color: #000000;">"</span><span style="color: #000000;">jack</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertEquals(</span><span style="color: #000000;">"</span><span style="color: #000000;">jack</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;person.getName());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;assertEquals(</span><span style="color: #000000;">10</span><span style="color: #000000;">,&nbsp;person.getAge());<br />
&nbsp;&nbsp;&nbsp;&nbsp;} <br />
</span></div>
<h4>&nbsp;&nbsp; 五、Handlers and Chains</h4>
Now let's start to explore some of the more powerful features of the Axis
engine. Let's say you want to track how many times your service has been
called. We've included a sample handler in the samples/log directory to
do just this. To use a handler class like this, you first need to deploy
the Handler itself, and then use the name that you give it in deploying
a service. Here's a sample deploy.wsdd file (this is example 4 in samples/userguide):<br />
<br />
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">&lt;</span><span style="color: #000000;">deployment&nbsp;xmlns</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://xml.apache.org/axis/wsdd/</span><span style="color: #000000;">"</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">xmlns:java</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">http://xml.apache.org/axis/wsdd/providers/java</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;">&lt;!--</span><span style="color: #000000;">&nbsp;define&nbsp;the&nbsp;logging&nbsp;handler&nbsp;configuration&nbsp;</span><span style="color: #000000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">&lt;</span><span style="color: #000000;">handler&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">track</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;type</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">java:samples.userguide.example4.LogHandler</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">filename</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">MyService.log</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&lt;/</span><span style="color: #000000;">handler</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&lt;!--</span><span style="color: #000000;">&nbsp;define&nbsp;the&nbsp;service,&nbsp;using&nbsp;the&nbsp;log&nbsp;handler&nbsp;we&nbsp;just&nbsp;defined&nbsp;</span><span style="color: #000000;">--&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&lt;</span><span style="color: #000000;">service&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">LogTestService</span><span style="color: #000000;">"</span><span style="color: #000000;">provider</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">java:RPC</span><span style="color: #000000;">"</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&lt;</span><span style="color: #000000;">requestFlow</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&lt;</span><span style="color: #000000;">handler&nbsp;type</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">track</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&lt;/</span><span style="color: #000000;">requestFlow</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">className</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">samples.userguide.example4.Service</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&lt;</span><span style="color: #000000;">parameter&nbsp;name</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">allowedMethods</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;value</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;">*</span><span style="color: #000000;">"</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&lt;/</span><span style="color: #000000;">service</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br />
</span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&lt;/</span><span style="color: #000000;">deployment</span><span style="color: #000000;">&gt;</span></div>
<br />
<p>The first section defines a Handler called "track" that is implemented
by the class samples.userguide.example4.LogHandler. We give this Handler
an option to let it know which file to write its messages into.
</p>
<p>Then we define a service, LogTestService, which is an RPC service just
like we saw above in our first example. The difference is the &lt;requestFlow&gt;
element inside the &lt;service&gt; - this indicates a set of Handlers that
should be invoked when the service is invoked, before the provider. By
inserting a reference to "track", we ensure that the message will be logged
each time this service is invoked.
</p>
<p>
</p>
<img src ="http://www.blogjava.net/persister/aggbug/235735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/persister/" target="_blank">persister</a> 2008-10-21 17:50 <a href="http://www.blogjava.net/persister/archive/2008/10/21/235735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>