﻿<?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-西瓜地儿-随笔分类-WEBSERVICES</title><link>http://www.blogjava.net/ashutc/category/42987.html</link><description>j2ee</description><language>zh-cn</language><lastBuildDate>Sun, 06 Dec 2009 10:29:41 GMT</lastBuildDate><pubDate>Sun, 06 Dec 2009 10:29:41 GMT</pubDate><ttl>60</ttl><item><title>利用CXF框架开发WebService(转)</title><link>http://www.blogjava.net/ashutc/archive/2009/11/24/303521.html</link><dc:creator>西瓜</dc:creator><author>西瓜</author><pubDate>Tue, 24 Nov 2009 13:20:00 GMT</pubDate><guid>http://www.blogjava.net/ashutc/archive/2009/11/24/303521.html</guid><wfw:comment>http://www.blogjava.net/ashutc/comments/303521.html</wfw:comment><comments>http://www.blogjava.net/ashutc/archive/2009/11/24/303521.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ashutc/comments/commentRss/303521.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ashutc/services/trackbacks/303521.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt;">开发工具：<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">MyEclipse 6.0</span></span></p>
<p style="margin: 0cm 0cm 0pt;">开发环境：</p>
<p><span style="font-family: Times New Roman;"><span style="font-size: 14pt;">1.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt;">jdk1.5</span></span></p>
<p><span style="font-family: Times New Roman;"><span style="font-size: 14pt;">2.<span style="font-family: &quot;Times New Roman&quot;; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 14pt;">CXF</span></span>框架，版本<span style="font-family: Helvetica; color: black; font-size: 14pt;"><a href="http://www.apache.org/dyn/closer.cgi?path=%2Fcxf%2F2.2.3%2Fapache-cxf-2.2.3.zip">apache-cxf-2.2.3.zip</a></span>，到<span style="font-family: Helvetica; color: black; font-size: 14pt;"><a href="http://cxf.apache.org/download.html"><span style="color: rgb(128, 0, 128);">http://cxf.apache.org/download.html</span></a></span>下载</p>
<p><span style="font-size: small;"><strong>注：如使用<span style="color: red;"><span style="font-family: Times New Roman;">jdk1.6</span></span></strong><strong>进行开发，需下载<span style="color: red;"><span style="font-family: Times New Roman;">jaxb-api.jar</span></span></strong><strong>和<span style="color: red;"><span style="font-family: Times New Roman;">jaxws-api.jar</span></span></strong><strong>，然后在本机安装<span style="color: red;"><span style="font-family: Times New Roman;">JDK</span></span></strong><strong>的地方，在<span style="color: red;"><span style="font-family: Times New Roman;">jdk1.6.0</span></span></strong><strong>的<span style="color: red;"><span style="font-family: Times New Roman;">jre</span></span></strong><strong>文件夹下的<span style="color: red;"><span style="font-family: Times New Roman;">lib</span></span></strong><strong>文件夹中新建<span style="color: red;"><span style="font-family: Times New Roman;">endorsed</span></span></strong><strong>文件夹，放入以上两个<span style="color: red;"><span style="font-family: Times New Roman;">jar</span></span></strong><strong>包才可以进行开发</strong>。</span></p>
<p><strong>第一步，先在</strong><strong><span style="font-size: 14pt;"><span style="font-family: Times New Roman;">MyEclipse</span></span></strong><strong>新建一个</strong><strong><span style="font-size: 14pt;"><span style="font-family: Times New Roman;">java</span></span></strong><strong>项目，项目名为</strong><strong><span style="font-size: 14pt;"><span style="font-family: Times New Roman;">HelloWebService。</span></span></strong></p>
<p><strong>第二步，在项目中引入</strong><strong><span style="font-family: Helvetica; color: black; font-size: 14pt;"><a href="http://www.apache.org/dyn/closer.cgi?path=%2Fcxf%2F2.2.3%2Fapache-cxf-2.2.3.zip">apache-cxf-2.2.3.zip</a></span></strong><strong>中</strong><strong><span style="font-family: Helvetica; color: black; font-size: 14pt;">lib</span></strong><strong>下的所有</strong><strong><span style="font-family: Helvetica; color: black; font-size: 14pt;">jar</span></strong><strong>包。</strong></p>
<p><strong>第三步，编写测试用接口以及其实现类：</strong></p>
<p><strong>&nbsp;</strong></p>
<p><strong><span style="font-size: small;">接口：</span></strong></p>
<p><strong>&nbsp;</strong></p>
<p><strong><span><span style="font-family: Times New Roman; font-size: small;">&nbsp;
<div>
<div>
<div>Java代码 <embed tplayername="SWF" splayername="SWF" id="Player1259064578014" type="application/x-shockwave-flash" src="http://weberyb.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=package%20test%3B%0A%0Aimport%20javax.jws.WebService%3B%0A%0Apublic%20interface%20Hello%20%7B%0A%09%0A%09public%20String%20sayHello(String%20str)%3B%0A%0A%7D" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" height="15" width="14"></div>
</div>
<ol start="1">
    <li>package&nbsp;test;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;</li>
    <li>import&nbsp;javax.jws.WebService;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;</li>
    <li>public&nbsp;interface&nbsp;Hello&nbsp;{&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;String&nbsp;sayHello(String&nbsp;str);&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;</li>
    <li>}&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">package test;
import javax.jws.WebService;
public interface Hello {
public String sayHello(String str);
}</pre>
<strong><span><font size="3">
</font></span></strong></span></span></strong></p>
<p><strong><span style="font-size: small;">实现类：</span></strong></p>
<p><strong><span><span style="font-family: Times New Roman; font-size: small;">&nbsp;
<div>
<div>
<div>Java代码 <embed tplayername="SWF" splayername="SWF" id="Player1259064578110" type="application/x-shockwave-flash" src="http://weberyb.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=package%20test%3B%0A%0Apublic%20class%20HelloImpl%20implements%20Hello%20%7B%0A%0A%09public%20String%20sayHello(String%20str)%20%7B%0A%09%09%0A%09%09System.out.println(%22%E8%B0%83%E7%94%A8%E6%88%90%E5%8A%9F%22)%3B%0A%09%09return%20%22Hello%20%22%20%2B%20str%3B%0A%09%7D%0A%0A%7D" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" height="15" width="14"></div>
</div>
<ol start="1">
    <li>package&nbsp;test;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;</li>
    <li>public&nbsp;class&nbsp;HelloImpl&nbsp;implements&nbsp;Hello&nbsp;{&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;String&nbsp;sayHello(String&nbsp;str)&nbsp;{&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("调用成功");&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;"Hello&nbsp;"&nbsp;+&nbsp;str;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;</li>
    <li>}&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">package test;
public class HelloImpl implements Hello {
public String sayHello(String str) {
System.out.println("调用成功");
return "Hello " + str;
}
}</pre>
<strong><span><font size="3">
</font></span></strong></span></span></strong></p>
<p><strong>&nbsp;</strong></p>
<p>在接口中添加<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">WebService</span></span>的注解，将其标注为<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">WebService</span></span>的服务接口。</p>
<p><strong>&nbsp;</strong></p>
<p><strong><span style="font-size: 14pt;"><span style="font-family: Times New Roman;">&nbsp;
<div>
<div>
<div>Java代码 <embed tplayername="SWF" splayername="SWF" id="Player1259064578191" type="application/x-shockwave-flash" src="http://weberyb.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=%40WebService%0Apublic%20interface%20Hello%20%7B" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" height="15" width="14"></div>
</div>
<ol start="1">
    <li>@WebService&nbsp;&nbsp;</li>
    <li>public&nbsp;interface&nbsp;Hello&nbsp;{&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">@WebService
public interface Hello {</pre>
<strong><span style="font-size: 14pt;"><font>
</font></span></strong></span></span></strong></p>
<p><strong>第四步，编写</strong><strong><span style="font-size: 14pt;"><span style="font-family: Times New Roman;">WebService</span></span></strong><strong>的服务器端。</strong></p>
<div>
<div>
<div>Java代码 <embed tplayername="SWF" splayername="SWF" id="Player1259064578295" type="application/x-shockwave-flash" src="http://weberyb.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=package%20test%3B%0A%0Aimport%20org.apache.cxf.endpoint.Server%3B%0Aimport%20org.apache.cxf.jaxws.JaxWsServerFactoryBean%3B%0A%0Apublic%20class%20MainServer%20%7B%0A%09%0A%09public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%09%09JaxWsServerFactoryBean%20factory%20%3D%20new%20JaxWsServerFactoryBean()%3B%0A%09%09factory.setAddress(%22http%3A%2F%2Flocalhost%3A8080%2FHelloWebService%22)%3B%0A%09%09factory.setServiceClass(HelloImpl.class)%3B%0A%09%09Server%20server%20%3D%20factory.create()%3B%0A%09%09server.start()%3B%0A%09%7D%0A%7D" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" height="15" width="14"></div>
</div>
<ol start="1">
    <li>package&nbsp;test;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;</li>
    <li>import&nbsp;org.apache.cxf.endpoint.Server;&nbsp;&nbsp;</li>
    <li>import&nbsp;org.apache.cxf.jaxws.JaxWsServerFactoryBean;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;</li>
    <li>public&nbsp;class&nbsp;MainServer&nbsp;{&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JaxWsServerFactoryBean&nbsp;factory&nbsp;=&nbsp;new&nbsp;JaxWsServerFactoryBean();&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory.setAddress("http://localhost:8080/HelloWebService");&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory.setServiceClass(HelloImpl.class);&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Server&nbsp;server&nbsp;=&nbsp;factory.create();&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.start();&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li>
    <li>}&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">package test;
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class MainServer {
public static void main(String[] args) {
JaxWsServerFactoryBean factory = new JaxWsServerFactoryBean();
factory.setAddress("http://localhost:8080/HelloWebService");
factory.setServiceClass(HelloImpl.class);
Server server = factory.create();
server.start();
}
}</pre>
<p><strong><span style="font-size: 14pt;"><span style="font-family: Times New Roman;">factory.setAddress("http://localhost:8080/HelloWebService");</span></span></strong></p>
<p>设置服务在服务器上部署的位置</p>
<p><strong><span style="font-size: 14pt;">&nbsp;</span></strong></p>
<p><strong><span style="font-size: 14pt;"><span style="font-family: Times New Roman;">factory.setServiceClass(HelloImpl.class);</span></span></strong></p>
<p>设置服务暴露的接口实现类</p>
<p><span style="font-size: 12pt;">&nbsp;</span></p>
<p>完成之后运行<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">MainServer</span></span>中的<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">main</span></span>方法。</p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 14pt;">&nbsp;</span></p>
<p style="margin: 0cm 0cm 0pt;">注：因为<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">CXF</span></span>框架中有<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">Jetty 6 </span></span>服务器，所以这个的<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">demo</span></span>发布在其中运行。</p>
<p style="margin: 0cm 0cm 0pt;"><span style="font-size: 14pt;">&nbsp;</span></p>
<p>之后打开浏览器，输入：</p>
<p><span style="font-size: 14pt;"><a href="http://localhost:8080/HelloWebService?wsdl"><span style="font-family: Times New Roman; color: rgb(128, 0, 128);">http://localhost:8080/HelloWebService?wsdl</span></a></span></p>
<p>如能看见以下画面则<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">WebService</span></span>发布成功：</p>
<p><span style="font-size: 14pt;">&nbsp;</span></p>
<p><span style="font-size: 14pt;">
<div>
<div>
<div>Xml代码 <embed tplayername="SWF" splayername="SWF" id="Player1259064578409" type="application/x-shockwave-flash" src="http://weberyb.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20%3F%3E%20%0A-%20%3Cwsdl%3Adefinitions%20name%3D%22HelloImplService%22%20targetNamespace%3D%22http%3A%2F%2Ftest%2F%22%20xmlns%3Ans1%3D%22http%3A%2F%2Fschemas.xmlsoap.org%2Fsoap%2Fhttp%22%20xmlns%3Asoap%3D%22http%3A%2F%2Fschemas.xmlsoap.org%2Fwsdl%2Fsoap%2F%22%20xmlns%3Atns%3D%22http%3A%2F%2Ftest%2F%22%20xmlns%3Awsdl%3D%22http%3A%2F%2Fschemas.xmlsoap.org%2Fwsdl%2F%22%20xmlns%3Axsd%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema%22%3E%0A-%20%3Cwsdl%3Atypes%3E%0A-%20%3Cxs%3Aschema%20elementFormDefault%3D%22unqualified%22%20targetNamespace%3D%22http%3A%2F%2Ftest%2F%22%20version%3D%221.0%22%20xmlns%3Atns%3D%22http%3A%2F%2Ftest%2F%22%20xmlns%3Axs%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema%22%3E%0A%20%20%3Cxs%3Aelement%20name%3D%22sayHello%22%20type%3D%22tns%3AsayHello%22%20%2F%3E%20%0A%20%20%3Cxs%3Aelement%20name%3D%22sayHelloResponse%22%20type%3D%22tns%3AsayHelloResponse%22%20%2F%3E%20%0A-%20%3Cxs%3AcomplexType%20name%3D%22sayHello%22%3E%0A-%20%3Cxs%3Asequence%3E%0A%20%20%3Cxs%3Aelement%20minOccurs%3D%220%22%20name%3D%22arg0%22%20type%3D%22xs%3Astring%22%20%2F%3E%20%0A%20%20%3C%2Fxs%3Asequence%3E%0A" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" height="15" width="14"></div>
</div>
<ol start="1">
    <li>&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"&nbsp;?&gt;&nbsp;&nbsp;&nbsp;</li>
    <li>-&nbsp;&lt;wsdl:definitions&nbsp;name="HelloImplService"&nbsp;targetNamespace="http://test/"&nbsp;xmlns:ns1="http://schemas.xmlsoap.org/soap/http"&nbsp;xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"&nbsp;xmlns:tns="http://test/"&nbsp;xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"&nbsp;xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;&nbsp;&nbsp;</li>
    <li>-&nbsp;&lt;wsdl:types&gt;&nbsp;&nbsp;</li>
    <li>-&nbsp;&lt;xs:schema&nbsp;elementFormDefault="unqualified"&nbsp;targetNamespace="http://test/"&nbsp;version="1.0"&nbsp;xmlns:tns="http://test/"&nbsp;xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&lt;xs:element&nbsp;name="sayHello"&nbsp;type="tns:sayHello"&nbsp;/&gt;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&lt;xs:element&nbsp;name="sayHelloResponse"&nbsp;type="tns:sayHelloResponse"&nbsp;/&gt;&nbsp;&nbsp;&nbsp;</li>
    <li>-&nbsp;&lt;xs:complexType&nbsp;name="sayHello"&gt;&nbsp;&nbsp;</li>
    <li>-&nbsp;&lt;xs:sequence&gt;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&lt;xs:element&nbsp;minOccurs="0"&nbsp;name="arg0"&nbsp;type="xs:string"&nbsp;/&gt;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&lt;/xs:sequence&gt;&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="xml">&lt;?xml version="1.0" encoding="UTF-8" ?&gt;
- &lt;wsdl:definitions name="HelloImplService" targetNamespace="http://test/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
- &lt;wsdl:types&gt;
- &lt;xs:schema elementFormDefault="unqualified" targetNamespace="http://test/" version="1.0" xmlns:tns="http://test/" xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt;
&lt;xs:element name="sayHello" type="tns:sayHello" /&gt;
&lt;xs:element name="sayHelloResponse" type="tns:sayHelloResponse" /&gt;
- &lt;xs:complexType name="sayHello"&gt;
- &lt;xs:sequence&gt;
&lt;xs:element minOccurs="0" name="arg0" type="xs:string" /&gt;
&lt;/xs:sequence&gt;
</pre>
</span></p>
<p><strong>第五步，编写客户端</strong></p>
<div>
<div>
<div>Java代码 <embed tplayername="SWF" splayername="SWF" id="Player1259064578499" type="application/x-shockwave-flash" src="http://weberyb.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=package%20test%3B%0A%0Aimport%20org.apache.cxf.jaxws.JaxWsProxyFactoryBean%3B%0A%0Apublic%20class%20Client%20%7B%0A%09public%20static%20void%20main(String%5B%5D%20args)%20%7B%0A%09%09JaxWsProxyFactoryBean%20factory%20%3D%20new%20JaxWsProxyFactoryBean()%3B%0A%09%09factory.setServiceClass(Hello.class)%3B%0A%09%09factory.setAddress(%22http%3A%2F%2Flocalhost%3A8080%2FHelloWebService%22)%3B%0A%09%09Hello%20hello%20%3D%20(Hello)factory.create()%3B%0A%09%09%0A%09%09System.out.println(hello.sayHello(%22weberyb%22))%3B%0A%09%7D%0A%0A%7D" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" height="15" width="14"></div>
</div>
<ol start="1">
    <li>package&nbsp;test;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;</li>
    <li>import&nbsp;org.apache.cxf.jaxws.JaxWsProxyFactoryBean;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;</li>
    <li>public&nbsp;class&nbsp;Client&nbsp;{&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JaxWsProxyFactoryBean&nbsp;factory&nbsp;=&nbsp;new&nbsp;JaxWsProxyFactoryBean();&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory.setServiceClass(Hello.class);&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;factory.setAddress("http://localhost:8080/HelloWebService");&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hello&nbsp;hello&nbsp;=&nbsp;(Hello)factory.create();&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(hello.sayHello("weberyb"));&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</li>
    <li>&nbsp;&nbsp;</li>
    <li>}&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">package test;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public class Client {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(Hello.class);
factory.setAddress("http://localhost:8080/HelloWebService");
Hello hello = (Hello)factory.create();
System.out.println(hello.sayHello("weberyb"));
}
}</pre>
<p><strong><span style="font-size: 14pt;">&nbsp;</span></strong></p>
<p><strong><span style="font-size: 14pt;"><span style="font-family: Times New Roman;">factory.setServiceClass(Hello.class);</span></span></strong></p>
<p>设置访问服务器端的指定接口。</p>
<p><span style="font-size: 14pt;">&nbsp;</span></p>
<p><strong><span style="font-size: 14pt;"><span style="font-family: Times New Roman;">factory.setAddress("http://localhost:8080/HelloWebService");</span></span></strong></p>
<p>设置访问的服务的地址。</p>
<p><span style="font-size: 14pt;">&nbsp;</span></p>
<p><strong><span style="font-size: 14pt;"><span style="font-family: Times New Roman;">factory.create()</span></span></strong></p>
<p>创建代理对象以供远程调用</p>
<p><strong><span style="font-size: 14pt;">&nbsp;</span></strong></p>
<p>之后运行<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">Client</span></span>中<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">main</span></span>方法，可以在控制台的服务器端看见如下输出：</p>
<div>
<div>
<div>Java代码 <embed tplayername="SWF" splayername="SWF" id="Player1259064578565" type="application/x-shockwave-flash" src="http://weberyb.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" mediawrapchecked="true" flashvars="clipboard=....................%0A2009-8-13%2014%3A00%3A42%20org.apache.cxf.service.factory.ReflectionServiceFactoryBean%20buildServiceFromClass%0A%E4%BF%A1%E6%81%AF%3A%20Creating%20Service%20%7Bhttp%3A%2F%2Ftest%2F%7DHelloService%20from%20class%20test.Hello%0AHello%20weberyb" quality="high" allowscriptaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" height="15" width="14"></div>
</div>
<ol start="1">
    <li>....................&nbsp;&nbsp;</li>
    <li>2009-8-13&nbsp;14:00:42&nbsp;org.apache.cxf.service.factory.ReflectionServiceFactoryBean&nbsp;buildServiceFromClass&nbsp;&nbsp;</li>
    <li>信息:&nbsp;Creating&nbsp;Service&nbsp;{http://test/}HelloService&nbsp;from&nbsp;class&nbsp;test.Hello&nbsp;&nbsp;</li>
    <li>Hello&nbsp;weberyb&nbsp;&nbsp;</li>
</ol>
</div>
<pre style="display: none;" name="code" class="java">....................
2009-8-13 14:00:42 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://test/}HelloService from class test.Hello
Hello weberyb</pre>
<p><span style="font-size: 14pt;">&nbsp;</span></p>
<p>说明客户端调用<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">WebService</span></span>成功。</p>
至此，这个简单的<span style="font-size: 14pt;"><span style="font-family: Times New Roman;">WebService</span></span>开发完毕<br />
尝试过jdk1.6&nbsp;&nbsp; 它的包会变成import org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean; 并且没有factory.setAddress这个方法 采用自带的例子进行测试 会出现参数null错误，但是客户端调用服务器端都调用成功，可能原因是没有加载那两个JAR文件的问题，暂时没有测试<br />
<br />
<img src ="http://www.blogjava.net/ashutc/aggbug/303521.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ashutc/" target="_blank">西瓜</a> 2009-11-24 21:20 <a href="http://www.blogjava.net/ashutc/archive/2009/11/24/303521.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于Tomcat5.0和Axis2开发Web Service应用实例(转)</title><link>http://www.blogjava.net/ashutc/archive/2009/11/23/303385.html</link><dc:creator>西瓜</dc:creator><author>西瓜</author><pubDate>Mon, 23 Nov 2009 13:37:00 GMT</pubDate><guid>http://www.blogjava.net/ashutc/archive/2009/11/23/303385.html</guid><wfw:comment>http://www.blogjava.net/ashutc/comments/303385.html</wfw:comment><comments>http://www.blogjava.net/ashutc/archive/2009/11/23/303385.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ashutc/comments/commentRss/303385.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ashutc/services/trackbacks/303385.html</trackback:ping><description><![CDATA[<div style="margin: 0cm 0cm 0pt;"><a href="http://zhangjunhd.blog.51cto.com/113473/23692">原帖出处：http://zhangjunhd.blog.51cto.com/113473/23692</a><br />
<br />
<font size="2"><em><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">本文将介绍如何使用</span>Tomcat5.0</em><em><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">和</span>Apache Axis2</em><em><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">开发、部署及测试一个简单的</span>Web Service</em><em><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">应用。</span></em></font><br />
<font size="2"><strong>1</strong><strong><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" de="">．</span></strong><strong><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">工作环境</span></strong></font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2">Eclipse 3.1.2+Lomboz+jdk1.5+ apache-tomcat-5.0.18+AXIS2:1.0(war<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">版本和</span>bin<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">版本</span>)</font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">在</span>[url]http://ws.apache.org/axis2/download/1_0/download.cgi[/url]<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" de="">页面</span><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">下</span><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" de="">，</span><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">下载</span>AXIS2<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">的</span>Binary Distribution url: [url]http://apache.justdn.org/ws/axis2/1_0/axis2-std-1.0-bin.zip[/url]<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">和</span>war Distribution url: [url]http://apache.justdn.org/ws/axis2/1_0/axis2-1.0-docs.zip[/url]<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。把这两个文件解压，比如解压缩的后得目录为</span>C:"axis2-std-1.0-bin<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">和</span>C:"axis2.war<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。</span></font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">在</span>Eclipse<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">下通过菜单</span>window—preferences&#8230;--Java—Build Path—User Libraries <span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">新建一个</span>user library,<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">比如名字就叫</span>axis2<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">把</span>C:"axis2-std-1.0-bin"lib<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">下的所有</span>jar<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">文件包含进来。把</span>axis2.war<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">拷贝到</span>%TOMCAT-HOME%/webapps<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">下面。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2"><strong>2</strong><strong><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">．检验安装</span></strong></font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">在</span>Eclipse<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">下启动</span>Tomcat<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，在地址栏内输入</span><a href="http://localhost:8080/axis2/">[url]http://localhost:8080/axis2/[/url]</a><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。</span></font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman=""><img onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' alt="" src="http://img1.51cto.com/attachment/200704/200704131176472439590.jpg" border="0" /></span></font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">点击</span>Validate<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，将到达</span> Axis2 Happiness Page<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。</span></font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman=""><img onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' alt="" src="http://img1.51cto.com/attachment/200704/200704131176472630905.jpg" border="0" /></span></font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2"><strong>3</strong><strong><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">．</span>WebService</strong><strong><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">中的</span>HelloWorld</strong></font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">1<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">）新建一个动态</span>web<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">工程，取名</span>ZZaxis<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，右键点击项目名，选择</span>Properties-Java Build Path-Add Library-User Library-axis2<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">2<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">）新建</span>package sample<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，建立</span>HelloWorld.java<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，代码如下。</span></font></div>
<div style="margin: 0cm 0cm 0pt;"><u><font size="2">HelloWorld.java</font></u></div>
<table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; width: 426.1pt;" valign="top" width="568">
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMAbstractFactory;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMElement;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMFactory;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMNamespace;</font></div>
            <div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">public class HelloWorld {</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public OMElement sayHello(OMElement in){</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String name=in.getText();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String info=name+"HelloWorld!";</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMFactory fac=OMAbstractFactory.getOMFactory();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMNamespace omNs=fac.createOMNamespace("http://helloworld.com/","hw");</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMElement resp=fac.createOMElement("sayHelloResponse",omNs);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resp.setText(info);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return resp;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">}</font></div>
            </td>
        </tr>
    </tbody>
</table>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">3<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">）在</span>WebContent"META-INF"<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">建立</span>services.xml<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，代码如下。</span></font></div>
<div style="margin: 0cm 0cm 0pt;"><u><font size="2">services.xml</font></u></div>
<table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; width: 426.1pt;" valign="top" width="568">
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;service name="HelloWorld"&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;description&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;This is a sample Web Service.</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;/description&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;parameter name="ServiceClass" locked="false"&gt;sample.HelloWorld&lt;/parameter&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;operation name="sayHello"&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;/operation&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;/service&gt;</font></div>
            </td>
        </tr>
    </tbody>
</table>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">4<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">）将目录</span>sample<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">和目录</span>META-INF<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">组织如下（新建目录</span>example<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">）。</span></font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">+-example</font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">|-------- +-sample</font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 15.75pt;"><font size="2">&nbsp;&nbsp;&nbsp; |------- HelloWorld.class</font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">|---------+-META-INF</font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |-------services.xml</font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">5<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">）打包生成</span>aar<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">文件。</span></font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">在命令符环境下，将当前目录转到</span>example<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。</span></font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2">jar cvf HelloWorld.aar . //<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">注意最后一个点，在当前目录下生成</span>HelloWorld.aar<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">6<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">）在</span>Eclipse<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">中启动</span>Tomcat<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，在地址栏下键入</span>[url]http://localhost:8080/axis2/[/url]<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。选择</span>Administration<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，输入用户名</span>admin<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，密码</span>axis2<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。选择左侧工具栏</span>Tools- Upload Service<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，上传之前打包的</span>HelloWorld.aar<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。该文件将在</span>&lt;CATALINA_HOME&gt;/webapps/axis2"WEB-INF"services<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">目录下。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">7<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">）编写客户端检验代码。新建</span>Java Project<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，取名为</span>ZZaxisClient<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。右键点击项目名，选择</span>Properties-Java Build Path-Add Library-User Library-axis2<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">8<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">）新建</span>package example.client<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。建立</span>TestClient.java<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">，代码如下。</span></font></div>
<div style="margin: 0cm 0cm 0pt;"><u><font size="2">TestClient.java</font></u></div>
<table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; width: 426.1pt;" valign="top" width="568">
            <div style="margin: 0cm 0cm 0pt;"><font size="2">package example.client;</font></div>
            <div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMAbstractFactory;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMElement;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMFactory;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMNamespace;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axis2.addressing.EndpointReference;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axis2.client.Options;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axis2.client.ServiceClient;</font></div>
            <div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">public class TestClient {</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private static EndpointReference targetEPR=new EndpointReference</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;("http://localhost:8080/axis2/services/HelloWorld");</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static OMElement getSayHelloOMElement(){</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMFactory fac=OMAbstractFactory.getOMFactory();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMNamespace omNs=fac.createOMNamespace("http://helloworld.com/","hw");</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMElement method=fac.createOMElement("sayHello",omNs);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; method.setText("ZJ");</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return method;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args){</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options options=new Options();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; options.setTo(targetEPR);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServiceClient sender=new ServiceClient();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sender.setOptions(options);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMElement sayHello=TestClient.getSayHelloOMElement();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMElement result=sender.sendReceive(sayHello);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(result);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception axisFault){</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; axisFault.printStackTrace();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">}</font></div>
            </td>
        </tr>
    </tbody>
</table>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">9<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">）测试，</span>run TestClient.java as Java Application<span style="font-family: 宋体;"  roman?;="" ?="" times="" new="" roman="">。结果：</span></font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;hw:sayHelloResponse xmlns:hw="http://helloworld.com/"</font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">xmlns:tns="http://ws.apache.org/axis2"&gt;</font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">ZJHelloWorld!</font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;/hw:sayHelloResponse&gt;<br />
<br />
<br />
</font>
<div style="margin: 0cm 0cm 0pt;"><font size="2"><strong>1</strong><strong><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">．</span>HelloWorld</strong><strong><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">做了些什么？</span></strong></font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2">HelloWorld<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">功能非常简单，在客户端输入你的姓名，本例中为</span>ZJ<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">。参数传递到服务器端后，经过处理将返回</span>name+"HelloWorld!"<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">，本例中为</span>ZJ HelloWorld!</font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2"><strong>2</strong><strong><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">．服务器端文件</span>HelloWorld.java</strong></font></div>
<div style="margin: 0cm 0cm 0pt;"><u><font size="2">HelloWorld.java</font></u></div>
<table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; width: 426.1pt;" valign="top" width="568">
            <div style="margin: 0cm 0cm 0pt;"><font size="2">package sample;</font></div>
            <div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMAbstractFactory;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMElement;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMFactory;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMNamespace;</font></div>
            <div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">public class HelloWorld {</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">读取</span>client<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">端</span>getSayHelloOMElement()<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">方法传递的参数</span>in<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public OMElement sayHello(OMElement in){</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">将</span>in<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">转换为</span>String<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String name=in.getText();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String info=name+"HelloWorld!";</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">创建</span>response SOAP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">包。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMFactory fac=OMAbstractFactory.getOMFactory();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // OMNamespace<span style="font-family: 宋体;" new=""  ?="" roman?;="" times="" fr="">指定此</span>SOAP<span style="font-family: 宋体;" new=""  ?="" roman?;="" times="" fr="">文档名称空间。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMNamespace omNs=fac.createOMNamespace("http://helloworld.com/","hw");</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体;" new=""  ?="" roman?;="" times="" fr="">创建元素</span>sayHello<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">，并指定其在</span>omNs<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">指代的名称空间中。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMElement resp=fac.createOMElement("sayHelloResponse",omNs);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">指定元素的文本内容。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; resp.setText(info);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return resp;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">}</font></div>
            </td>
        </tr>
    </tbody>
</table>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2"><strong>3</strong><strong><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">．</span>services.xml</strong><strong><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">部署文件</span></strong></font></div>
<div style="margin: 0cm 0cm 0pt;"><u><font size="2">services.xml</font></u></div>
<table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; width: 426.1pt;" valign="top" width="568">
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">//<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">下面定义服务名</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;service name="HelloWorld"&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;description&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;This is a sample Web Service.</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;/description&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">// ServiceClass<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">指定</span>Java Class<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">的位置，即实现服务的类。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;parameter name="ServiceClass" locked="false"&gt;sample.HelloWorld&lt;/parameter&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">// operation <span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">与</span>Java Class<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">中方法名对应。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;operation name="sayHello"&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">// messageReceiver<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">看下文注解。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&lt;messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;/operation&gt;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&lt;/service&gt;</font></div>
            </td>
        </tr>
    </tbody>
</table>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2"><u><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">注解：</span></u><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">消息交换模式。</span></font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">目前</span>Axis2<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">支持三种模式：</span>In-Only<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">、</span>Robust-In<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">和</span>In-Out<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">。</span>In-Only<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">消息交换模式只有</span>SOAP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">请求，而不需要应答；</span>Robust-In<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">消息交换模式发送</span>SOAP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">请求，只有在出错的情况下才返回应答；</span>In-Out<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">消息交换模式总是存在</span>SOAP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">请求和应答。本例使用</span>In-Out<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">模式。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2"><strong>4</strong><strong><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">．客户端文件</span>TestClient.java</strong></font></div>
<div style="margin: 0cm 0cm 0pt;"><u><font size="2">TestClient.java</font></u></div>
<table style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td style="padding: 0cm 5.4pt; background: #e6e6e6 none repeat scroll 0% 0%; -moz-background-clip: border; -moz-background-origin: padding; -moz-background-inline-policy: continuous; width: 426.1pt;" valign="top" width="568">
            <div style="margin: 0cm 0cm 0pt;"><font size="2">package example.client;</font></div>
            <div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMAbstractFactory;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMElement;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMFactory;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axiom.om.OMNamespace;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axis2.addressing.EndpointReference;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axis2.client.Options;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">import org.apache.axis2.client.ServiceClient;</font></div>
            <div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">public class TestClient {</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp; // targetEPR<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">指定打包的</span>Service<span style="font-family: 宋体;" new=""  ?="" roman?;="" times="" fr="">（</span>.aar<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">文件</span><span style="font-family: 宋体;" new=""  ?="" roman?;="" times="" fr="">）</span><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">在容器中的物理位置。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private static EndpointReference targetEPR=new EndpointReference</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;("http://localhost:8080/axis2/services/HelloWorld");</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static OMElement getSayHelloOMElement(){</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">创建</span>request SOAP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">包。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMFactory fac=OMAbstractFactory.getOMFactory();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // OMNamespace<span style="font-family: 宋体;" new=""  ?="" roman?;="" times="" fr="">指定此</span>SOAP<span style="font-family: 宋体;" new=""  ?="" roman?;="" times="" fr="">文档名称空间。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMNamespace omNs=fac.createOMNamespace("http://helloworld.com/","hw");</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体;" new=""  ?="" roman?;="" times="" fr="">创建元素</span>sayHello<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">，并指定其在</span>omNs<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">指代的名称空间中。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMElement method=fac.createOMElement("sayHello",omNs);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">指定元素的文本内容。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; method.setText("ZJ");</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return method;</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args){</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try{</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options options=new Options();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; options.setTo(targetEPR);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ServiceClient sender=new ServiceClient();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sender.setOptions(options);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMElement sayHello=TestClient.getSayHelloOMElement();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">发出</span>request SOAP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">，</span></font></div>
            <div style="margin: 0cm 0cm 0pt; text-indent: 63pt;"><font size="2">//<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">同时将得到的远端由</span>sayHello<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">方法返回的信息保存到</span>result<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">。</span></font></div>
            <div style="margin: 0cm 0cm 0pt; text-indent: 63pt;"><font size="2">//<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">通过</span>services.xml<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">能准确找到</span>sayHello<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">方法所在的文件。</span></font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OMElement result=sender.sendReceive(sayHello);</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(Exception axisFault){</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; axisFault.printStackTrace();</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></div>
            <div style="margin: 0cm 0cm 0pt;"><font size="2">}</font></div>
            </td>
        </tr>
    </tbody>
</table>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><a name="N10080"><strong><font size="2">5</font></strong></a><font size="2"><strong><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">．Axis2</span></strong><strong><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">简介</span></strong></font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2">Apache Axis2 <span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">是</span>Axis<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">的后续版本，是新一代的</span>SOAP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">引擎。</span>Axis2<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">的主要特点有：</span></font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">1<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">）采用名为</span> AXIOM<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">（</span>AXIs Object Model<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">）的新核心</span> XML <span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">处理模型，利用新的</span>XML<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">解析器提供的灵活性按需构造对象模型。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">2<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">）支持不同的消息交换模式。目前</span>Axis2<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">支持三种模式：</span>In-Only<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">、</span>Robust-In<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">和</span>In-Out<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">。</span>In-Only<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">消息交换模式只有</span>SOAP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">请求，而不需要应答；</span>Robust-In<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">消息交换模式发送</span>SOAP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">请求，只有在出错的情况下才返回应答；</span>In-Out<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">消息交换模式总是存在</span>SOAP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">请求和应答。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">3<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">）提供阻塞和非阻塞客户端</span> API<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">4<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">）支持内置的</span> Web<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">服务寻址</span> (WS-Addressing) <span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">5<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">）灵活的数据绑定，可以选择直接使用</span> AXIOM<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">，使用与原来的</span> Axis <span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">相似的简单数据绑定方法，或使用</span> XMLBeans<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">、</span>JiBX <span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">或</span> JAXB 2.0 <span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">等专用数据绑定框架。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">6<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">）新的部署模型，支持热部署。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">7<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">）支持</span>HTTP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">，</span>SMTP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">，</span>JMS<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">，</span>TCP<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">传输协议。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">8<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">）支持</span>REST (Representational State Transfer)<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">。</span></font></div>
<div style="margin: 0cm 0cm 0pt;">&nbsp;</div>
<div style="margin: 0cm 0cm 0pt;"><font size="2"><strong>6</strong><strong><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">．</span>Axis2 </strong><strong><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">支持的规范包括：</span></strong></font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">-SOAP 1.1 and 1.2 </font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">-Message Transmission Optimization Mechanism (MTOM), XML Optimized Packaging (XOP) and SOAP with Attachments </font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">-WSDL 1.1, including both SOAP and HTTP bindings </font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">-WS-Addressing (submission and final) </font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">-WS-Policy </font></div>
<div style="margin: 0cm 0cm 0pt;"><font size="2">-SAAJ 1.1 </font></div>
<div style="margin: 0cm 0cm 0pt; text-indent: 21pt;"><font size="2"><span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">有关</span>Axis2<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">更加详细的介绍，可以访问</span>Axis2<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">网站</span>[url]http://ws.apache.org/axis2/[/url]<span style="font-family: 宋体;"  roman?="" new=""  ?="" roman?;="" times="">。</span></font></div>
<br />
</div>
<img src ="http://www.blogjava.net/ashutc/aggbug/303385.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ashutc/" target="_blank">西瓜</a> 2009-11-23 21:37 <a href="http://www.blogjava.net/ashutc/archive/2009/11/23/303385.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>