CXF
来源:互联网 发布:云计算市场分析报告 编辑:程序博客网 时间:2024/05/20 05:09
<h1 class="csdn_top">CXF实现webService服务(一)</h1>
<div class="article_bar clearfix">
<div class="artical_tag">
<span class="original">
原创 </span>
<span class="time">2014年08月05日 14:04:16</span>
</div>
<ul class="article_tags clearfix csdn-tracking-statistics" data-mod="popu_377" style="display: none;">
<li class="tit">标签:</li>
<!-- [startarticletags]-->
<!-- [endarticletags]-->
</ul>
<ul class="right_bar">
<li><button class="btn-noborder"><i class="icon iconfont icon-read"></i><span class="txt">56588</span></button></li>
<li class="edit" style="display: none;">
<a class="btn-noborder" href="http://write.blog.csdn.net/postedit/38384597">
<i class="icon iconfont icon-bianji"></i><span class="txt">编辑</span>
</a>
</li>
<li class="del" style="display: none;">
<a class="btn-noborder" onclick="javascript:deleteArticle(fileName);return false;">
<i class="icon iconfont icon-shanchu"></i><span class="txt">删除</span>
</a>
</li>
</ul>
</div>
<div id="article_content" class="article_content csdn-tracking-statistics" data-mod="popu_519" data-dsm="post" style="height: 1521px; overflow: hidden;">
<p><br></p>
<p>以前工作中也用CXF,但都是用别人现成搭好的环境,这次自己重头搭建一遍环境。过程中也有遇到的问题,也做了简单的整理。</p>
<p>对于CXF是干什么用的,我不想多说,大家都知道这是我们在java编程中webService技术的一种实现工具。我们说说为什么用CXF来实现webService:</p>
<p>1. Java的webService实现本身就是一个很耗性能的实现方案(xml与java对象之间在服务端以及客户端的互转比较消耗性能)</p>
<p>2. 目前java主流的webService应用以CXF、AXIS2为主;</p>
<p>3. 通过网络渠道的了解,目前CXF的效率要比AXIS2高出至少50%;</p>
<p>4. 另外有一个webService的工具metro的效率比CXF高出10%;</p>
<p>5. CXF的实现资料网上可以随便找出一大堆,metro的资料相对少一些;</p>
<p>6. CXF在java应用实现中已经很成熟,企业更倾向于用这样一个成熟的解决方案;</p>
<p>基于以上原因,我选择CXF来实现webService。</p>
<p>参考资料:</p>
<p>Java Web 服务: CXF 性能比较----CXF 与最新版本的 Axis2 和 Metro 之间的性能对比</p>
<p><a href="http://www.ibm.com/developerworks/cn/java/j-jws14/">http://www.ibm.com/developerworks/cn/java/j-jws14/</a></p>
<p> </p>
<p>一 以annotation注解方式实现发布webService应用</p>
<p>1、 基础环境</p>
<p>新建java web工程cxf之后,下载cxf工具包。解压CXF之后,把cxf工具包lib下的jar包全部放到工程的lib下。</p>
<p>此处用到的cxf工具包版本为:apache-cxf-2.7.12</p>
<p>下载地址:</p>
<p><a href="http://www.apache.org/dyn/closer.cgi?path=/cxf/2.7.12/apache-cxf-2.7.12.zip">http://www.apache.org/dyn/closer.cgi?path=/cxf/2.7.12/apache-cxf-2.7.12.zip</a></p>
<p> </p>
<p>2、 编写服务接口</p>
<p>见文件<a>HelloWorld.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 906px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.server; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> java.util.List; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> javax.jws.WebParam; </span></span></li><li class=""><span><span class="keyword">import</span><span> javax.jws.WebService; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">import</span><span> com.hsy.pojo.User; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="annotation">@WebService</span><span> </span></span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">interface</span><span> HelloWorld { </span></span></li><li class=""><span> String sayHi(<span class="annotation">@WebParam</span><span>(name=</span><span class="string">"text"</span><span>)String text); </span></span></li><li class="alt"><span> String sayHiToUser(User user); </span></li><li class=""><span> String[] SayHiToUserList(List<User> userList); </span></li><li class="alt"><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.server;
import java.util.List;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.hsy.pojo.User;
@WebService
public interface HelloWorld {
String sayHi(@WebParam(name="text")String text);
String sayHiToUser(User user);
String[] SayHiToUserList(List<User> userList);
}
</pre><br><br><p></p>
<p> </p>
<p>3、 服务接口实现</p>
<p>见文件<a>HelloWorldImpl.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 1363px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_2" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.server; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> java.util.LinkedHashMap; </span></span></li><li class=""><span><span class="keyword">import</span><span> java.util.List; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> java.util.Map; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> javax.jws.WebParam; </span></span></li><li class=""><span><span class="keyword">import</span><span> javax.jws.WebService; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">import</span><span> com.hsy.pojo.User; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="annotation">@WebService</span><span>(endpointInterface=</span><span class="string">"com.hsy.server.HelloWorld"</span><span>,serviceName=</span><span class="string">"HelloWorld"</span><span>) </span></span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> HelloWorldImpl </span><span class="keyword">implements</span><span> HelloWorld { </span></span></li><li class=""><span> Map<Integer, User> users = <span class="keyword">new</span><span> LinkedHashMap<Integer, User>(); </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">public</span><span> String sayHi(</span><span class="annotation">@WebParam</span><span>(name = </span><span class="string">"text"</span><span>) String text) { </span></span></li><li class="alt"><span> <span class="keyword">return</span><span> </span><span class="string">"Hello,"</span><span>+text; </span></span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">public</span><span> String sayHiToUser(User user) { </span></span></li><li class="alt"><span> users.put(users.size()+<span class="number">1</span><span>, user); </span></span></li><li class=""><span> <span class="keyword">return</span><span> </span><span class="string">"Hello,"</span><span>+user.getName(); </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> String[] SayHiToUserList(List<User> userList) { </span></span></li><li class=""><span> String[] result = <span class="keyword">new</span><span> String[userList.size()]; </span></span></li><li class="alt"><span> <span class="keyword">int</span><span> i = </span><span class="number">0</span><span>; </span></span></li><li class=""><span> <span class="keyword">for</span><span>(User u:userList){ </span></span></li><li class="alt"><span> result[i] = <span class="string">"Hello "</span><span> + u.getName(); </span></span></li><li class=""><span> i++; </span></li><li class="alt"><span> } </span></li><li class=""><span> <span class="keyword">return</span><span> result; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">/**</span> </span></li><li class=""><span><span class="comment"> * @param args</span> </span></li><li class="alt"><span><span class="comment"> */</span><span> </span></span></li><li class=""><span> <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) { </span></span></li><li class="alt"><span> <span class="comment">// TODO Auto-generated method stub</span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.server;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.hsy.pojo.User;
@WebService(endpointInterface="com.hsy.server.HelloWorld",serviceName="HelloWorld")
public class HelloWorldImpl implements HelloWorld {
Map<Integer, User> users = new LinkedHashMap<Integer, User>();
public String sayHi(@WebParam(name = "text") String text) {
return "Hello,"+text;
}
public String sayHiToUser(User user) {
users.put(users.size()+1, user);
return "Hello,"+user.getName();
}
public String[] SayHiToUserList(List<User> userList) {
String[] result = new String[userList.size()];
int i = 0;
for(User u:userList){
result[i] = "Hello " + u.getName();
i++;
}
return result;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
</pre><br><p></p>
<p>4、 发布服务app</p>
<p>见文件<a>webServiceApp.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 2276px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_3" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_3" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=3&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.server; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> javax.xml.ws.Endpoint; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> webServiceApp { </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">/**</span> </span></li><li class=""><span><span class="comment"> * @param args</span> </span></li><li class="alt"><span><span class="comment"> */</span><span> </span></span></li><li class=""><span> <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) { </span></span></li><li class="alt"><span> System.out.println(<span class="string">"web service start"</span><span>); </span></span></li><li class=""><span> HelloWorldImpl implementor = <span class="keyword">new</span><span> HelloWorldImpl(); </span></span></li><li class="alt"><span> String address = <span class="string">"http://localhost:8080/helloWorld"</span><span>; </span></span></li><li class=""><span> Endpoint.publish(address, implementor); </span></li><li class="alt"><span> System.out.println(<span class="string">"web service started"</span><span>); </span></span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.server;
import javax.xml.ws.Endpoint;
public class webServiceApp {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("web service start");
HelloWorldImpl implementor = new HelloWorldImpl();
String address = "http://localhost:8080/helloWorld";
Endpoint.publish(address, implementor);
System.out.println("web service started");
}
}
</pre><br><br><p></p>
<p><br></p>
<p>右键 run as 选择java application发布服务;然后在浏览器输入地址:<a href="http://localhost:8080/helloWorld?wsdl">http://localhost:8080/helloWorld?wsdl</a></p>
<p>如图:<a>20140805132120.jpg</a></p>
<p><img src="http://img.blog.csdn.net/20140805135841500?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVfc2hlbmd5YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""><br></p>
<p>说明webService服务发布成功。</p>
<p> </p>
<p>5、 客户端访问服务</p>
<p>见文件<a>HelloWorldClient.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 3312px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_4" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_4" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=4&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.client; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> org.apache.cxf.jaxws.JaxWsProxyFactoryBean; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> com.hsy.pojo.User; </span></span></li><li class=""><span><span class="keyword">import</span><span> com.hsy.server.HelloWorld; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> HelloWorldClient { </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment"> * @param args</span> </span></li><li class=""><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) { </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">//首先右键run as 运行com.hsy.server.webServiceApp类,然后再运行这段客户端代码</span><span> </span></span></li><li class=""><span> JaxWsProxyFactoryBean jwpfb = <span class="keyword">new</span><span> JaxWsProxyFactoryBean(); </span></span></li><li class="alt"><span> jwpfb.setServiceClass(HelloWorld.<span class="keyword">class</span><span>); </span></span></li><li class=""><span> jwpfb.setAddress(<span class="string">"http://localhost:8080/helloWorld"</span><span>); </span></span></li><li class="alt"><span> HelloWorld hw = (HelloWorld) jwpfb.create(); </span></li><li class=""><span> User user = <span class="keyword">new</span><span> User(); </span></span></li><li class="alt"><span> user.setName(<span class="string">"马克思"</span><span>); </span></span></li><li class=""><span> user.setDescription(<span class="string">"怀念马克思"</span><span>); </span></span></li><li class="alt"><span> System.out.println(hw.sayHiToUser(user)); </span></li><li class=""><span> </span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.hsy.pojo.User;
import com.hsy.server.HelloWorld;
public class HelloWorldClient {
/**
* @param args
*/
public static void main(String[] args) {
//首先右键run as 运行com.hsy.server.webServiceApp类,然后再运行这段客户端代码
JaxWsProxyFactoryBean jwpfb = new JaxWsProxyFactoryBean();
jwpfb.setServiceClass(HelloWorld.class);
jwpfb.setAddress("http://localhost:8080/helloWorld");
HelloWorld hw = (HelloWorld) jwpfb.create();
User user = new User();
user.setName("马克思");
user.setDescription("怀念马克思");
System.out.println(hw.sayHiToUser(user));
}
}
</pre><br><br><p></p>
<p>右键 run as 选择java application,控制台打印如图:</p>
<p><a>20140805132610.jpg</a></p>
<p><img src="http://img.blog.csdn.net/20140805140001218?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVfc2hlbmd5YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""><br></p>
<p>Ok,客户端访问也成功了。</p>
<p>6、 附:</p>
<p><a>User.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 4251px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_5" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_5" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=5&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.pojo; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> java.io.Serializable; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="annotation">@SuppressWarnings</span><span>(</span><span class="string">"serial"</span><span>) </span></span></li><li class=""><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> User </span><span class="keyword">implements</span><span> Serializable { </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">private</span><span> String id; </span></span></li><li class="alt"><span> <span class="keyword">private</span><span> String name; </span></span></li><li class=""><span> <span class="keyword">private</span><span> String age; </span></span></li><li class="alt"><span> <span class="keyword">private</span><span> String description; </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> User() { </span></span></li><li class=""><span> <span class="keyword">super</span><span>(); </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> String getId() { </span></span></li><li class=""><span> <span class="keyword">return</span><span> id; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> setId(String id) { </span></span></li><li class=""><span> <span class="keyword">this</span><span>.id = id; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> String getName() { </span></span></li><li class=""><span> <span class="keyword">return</span><span> name; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> setName(String name) { </span></span></li><li class=""><span> <span class="keyword">this</span><span>.name = name; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> String getAge() { </span></span></li><li class=""><span> <span class="keyword">return</span><span> age; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> setAge(String age) { </span></span></li><li class=""><span> <span class="keyword">this</span><span>.age = age; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> String getDescription() { </span></span></li><li class=""><span> <span class="keyword">return</span><span> description; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> setDescription(String description) { </span></span></li><li class=""><span> <span class="keyword">this</span><span>.description = description; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> </span></li><li class=""><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.pojo;
import java.io.Serializable;
@SuppressWarnings("serial")
public class User implements Serializable {
private String id;
private String name;
private String age;
private String description;
public User() {
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
</pre><br><br><p></p>
<p> </p>
<p>二与spring集成实现webService</p>
<p>1、 配置web.xml</p>
<p>见文件<a>web.xml</a></p>
<p></p>
<div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 245px; top: 5362px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_6" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_6" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=6&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span class="tag"><?</span><span class="tag-name">xml</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span> </span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"UTF-8"</span><span class="tag">?></span><span> </span></span></li><li class=""><span><span class="tag"><</span><span class="tag-name">web-app</span><span> </span><span class="attribute">xmlns:xsi</span><span>=</span><span class="attribute-value">"http://www.w3.org/2001/XMLSchema-instance"</span><span> </span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">"http://java.sun.com/xml/ns/javaee"</span><span> </span><span class="attribute">xmlns:web</span><span>=</span><span class="attribute-value">"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</span><span> </span><span class="attribute">xsi:schemaLocation</span><span>=</span><span class="attribute-value">"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"WebApp_ID"</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">"2.5"</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">display-name</span><span class="tag">></span><span>cxf</span><span class="tag"></</span><span class="tag-name">display-name</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">welcome-file-list</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>index.html</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>index.htm</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>index.jsp</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>default.html</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>default.htm</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>default.jsp</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"></</span><span class="tag-name">welcome-file-list</span><span class="tag">></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">context-param</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">param-name</span><span class="tag">></span><span>contextConfigLocation</span><span class="tag"></</span><span class="tag-name">param-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">param-value</span><span class="tag">></span><span>WEB-INF/classes/applicationContext.xml</span><span class="tag"></</span><span class="tag-name">param-value</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">context-param</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">listener</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">listener-class</span><span class="tag">></span><span> </span></span></li><li class=""><span> org.springframework.web.context.ContextLoaderListener </span></li><li class="alt"><span> <span class="tag"></</span><span class="tag-name">listener-class</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">listener</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">servlet</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">servlet-name</span><span class="tag">></span><span>CXFServlet</span><span class="tag"></</span><span class="tag-name">servlet-name</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">servlet-class</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> org.apache.cxf.transport.servlet.CXFServlet </span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">servlet-class</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">load-on-startup</span><span class="tag">></span><span>1</span><span class="tag"></</span><span class="tag-name">load-on-startup</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">servlet</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">servlet-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">servlet-name</span><span class="tag">></span><span>CXFServlet</span><span class="tag"></</span><span class="tag-name">servlet-name</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>/webservice/*</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"></</span><span class="tag-name">servlet-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> </span></li><li class=""><span> </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comments"><!-- 字符过滤器 --></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-class</span><span class="tag">></span><span>org.springframework.web.filter.CharacterEncodingFilter</span><span class="tag"></</span><span class="tag-name">filter-class</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">init-param</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">param-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">param-name</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">param-value</span><span class="tag">></span><span>UTF-8</span><span class="tag"></</span><span class="tag-name">param-value</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"></</span><span class="tag-name">init-param</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">init-param</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">param-name</span><span class="tag">></span><span>forceEncoding</span><span class="tag"></</span><span class="tag-name">param-name</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">param-value</span><span class="tag">></span><span>true</span><span class="tag"></</span><span class="tag-name">param-value</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"></</span><span class="tag-name">init-param</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.jsp</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.html</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.do</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.action</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.jsp</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.html</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.do</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.3g</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="tag"></</span><span class="tag-name">web-app</span><span class="tag">></span><span> </span></span></li></ol></div><pre class="html" name="code" style="display: none;"><?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>cxf</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/webservice/*</url-pattern>
</servlet-mapping>
<!-- 字符过滤器 -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.3g</url-pattern>
</filter-mapping>
</web-app></pre><br><br><p></p>
<p> </p>
<p>2、 配置applicationContext.xml</p>
<p>见文件<a>applicationContext.xml</a></p>
<p></p>
<div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 245px; top: 7204px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_7" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_7" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=7&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span class="tag"><?</span><span class="tag-name">xml</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span> </span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"UTF-8"</span><span class="tag">?></span><span> </span></span></li><li class=""><span><span class="tag"><</span><span class="tag-name">beans</span><span> </span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">"http://www.springframework.org/schema/beans"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">xmlns:xsi</span><span>=</span><span class="attribute-value">"http://www.w3.org/2001/XMLSchema-instance"</span><span> </span></span></li><li class=""><span> <span class="attribute">xmlns:jaxws</span><span>=</span><span class="attribute-value">"http://cxf.apache.org/jaxws"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">xsi:schemaLocation</span><span>=" </span></span></li><li class=""><span> http://www.springframework.org/schema/beans </span></li><li class="alt"><span> http://www.springframework.org/schema/beans/spring-beans.xsd </span></li><li class=""><span> http://cxf.apache.org/jaxws </span></li><li class="alt"><span> http://cxf.apache.org/schemas/jaxws.xsd"<span class="tag">></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">import</span><span> </span><span class="attribute">resource</span><span>=</span><span class="attribute-value">"classpath:META-INF/cxf/cxf.xml"</span><span class="tag">/></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">import</span><span> </span><span class="attribute">resource</span><span>=</span><span class="attribute-value">"classpath:META-INF/cxf/cxf-extension-soap.xml"</span><span class="tag">/></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">import</span><span> </span><span class="attribute">resource</span><span>=</span><span class="attribute-value">"classpath:META-INF/cxf/cxf-servlet.xml"</span><span class="tag">/></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">jaxws:endpoint</span><span> </span></span></li><li class=""><span> <span class="attribute">id</span><span>=</span><span class="attribute-value">"helloWorld"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">implementor</span><span>=</span><span class="attribute-value">"com.hsy.server.HelloWorldImpl"</span><span> </span></span></li><li class=""><span> <span class="attribute">address</span><span>=</span><span class="attribute-value">"/helloWorld"</span><span> </span><span class="tag">/></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">bean</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"client"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">class</span><span>=</span><span class="attribute-value">"com.hsy.server.HelloWorld"</span><span> </span></span></li><li class=""><span> <span class="attribute">factory-bean</span><span>=</span><span class="attribute-value">"clientFactory"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">factory-method</span><span>=</span><span class="attribute-value">"create"</span><span class="tag">/></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">bean</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"clientFactory"</span><span> </span><span class="attribute">class</span><span>=</span><span class="attribute-value">"org.apache.cxf.jaxws.JaxWsProxyFactoryBean"</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"serviceClass"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"com.hsy.server.HelloWorld"</span><span class="tag">/></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"address"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"http://localhost:8080/cxf/webservice/helloWorld"</span><span class="tag">/></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">bean</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="tag"></</span><span class="tag-name">beans</span><span class="tag">></span><span> </span></span></li></ol></div><pre class="html" name="code" style="display: none;"><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<jaxws:endpoint
id="helloWorld"
implementor="com.hsy.server.HelloWorldImpl"
address="/helloWorld" />
<bean id="client"
class="com.hsy.server.HelloWorld"
factory-bean="clientFactory"
factory-method="create"/>
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.hsy.server.HelloWorld"/>
<property name="address" value="http://localhost:8080/cxf/webservice/helloWorld"/>
</bean>
</beans></pre><br><br><p></p>
<p> </p>
<p>3、 修改客户端代码</p>
<p>见文件<a>HelloWorldClient.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 7931px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_8" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_8" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=8&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.client; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> java.util.ArrayList; </span></span></li><li class=""><span><span class="keyword">import</span><span> java.util.List; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">import</span><span> org.springframework.beans.factory.BeanFactory; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.springframework.beans.factory.xml.XmlBeanFactory; </span></span></li><li class=""><span><span class="keyword">import</span><span> org.springframework.context.ApplicationContext; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.springframework.context.support.ClassPathXmlApplicationContext; </span></span></li><li class=""><span><span class="keyword">import</span><span> org.springframework.core.io.FileSystemResource; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.springframework.core.io.Resource; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> com.hsy.pojo.User; </span></span></li><li class=""><span><span class="keyword">import</span><span> com.hsy.server.HelloWorld; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> HelloWorldClient { </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment"> * @param args</span> </span></li><li class=""><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) { </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">//Resource resource= new FileSystemResource("F:/workspaces4me2013/.metadata/.me_tcat/WEB-INF/classes/applicationContext.xml"); </span><span> </span></span></li><li class=""><span> <span class="comment">//BeanFactory factory= new XmlBeanFactory(resource ); </span><span> </span></span></li><li class="alt"><span> ApplicationContext factory = <span class="keyword">new</span><span> ClassPathXmlApplicationContext(</span><span class="string">"/applicationContext.xml"</span><span>); </span></span></li><li class=""><span> HelloWorld client = (HelloWorld)factory.getBean(<span class="string">"client"</span><span>); </span></span></li><li class="alt"><span> User user1 = <span class="keyword">new</span><span> User(); </span></span></li><li class=""><span> user1.setName(<span class="string">"马克思"</span><span>); </span></span></li><li class="alt"><span> user1.setDescription(<span class="string">"怀念马克思"</span><span>); </span></span></li><li class=""><span> User user2 = <span class="keyword">new</span><span> User(); </span></span></li><li class="alt"><span> user2.setName(<span class="string">"恩格斯"</span><span>); </span></span></li><li class=""><span> user2.setDescription(<span class="string">"怀念恩格斯"</span><span>); </span></span></li><li class="alt"><span> List<User> userList= <span class="keyword">new</span><span> ArrayList<User>(); </span></span></li><li class=""><span> userList.add(user1); </span></li><li class="alt"><span> userList.add(user2); </span></li><li class=""><span> String[] res = client.SayHiToUserList(userList); </span></li><li class="alt"><span> System.out.println(res[<span class="number">0</span><span>]); </span></span></li><li class=""><span> System.out.println(res[<span class="number">1</span><span>]); </span></span></li><li class="alt"><span> </span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.client;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import com.hsy.pojo.User;
import com.hsy.server.HelloWorld;
public class HelloWorldClient {
/**
* @param args
*/
public static void main(String[] args) {
//Resource resource= new FileSystemResource("F:/workspaces4me2013/.metadata/.me_tcat/WEB-INF/classes/applicationContext.xml");
//BeanFactory factory= new XmlBeanFactory(resource );
ApplicationContext factory = new ClassPathXmlApplicationContext("/applicationContext.xml");
HelloWorld client = (HelloWorld)factory.getBean("client");
User user1 = new User();
user1.setName("马克思");
user1.setDescription("怀念马克思");
User user2 = new User();
user2.setName("恩格斯");
user2.setDescription("怀念恩格斯");
List<User> userList= new ArrayList<User>();
userList.add(user1);
userList.add(user2);
String[] res = client.SayHiToUserList(userList);
System.out.println(res[0]);
System.out.println(res[1]);
}
}
</pre><br><br><p></p>
<p> </p>
<p>4、 启动tamcat发布webService</p>
<p>然后在浏览器输入地址:<a href="http://localhost:8080/cxf/webservice/helloWorld?wsdl">http://localhost:8080/cxf/webservice/helloWorld?wsdl</a></p>
<p>如图:<a>20140805133642.jpg</a></p>
<p><img src="http://img.blog.csdn.net/20140805140452789?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVfc2hlbmd5YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""><br></p>
<p>说明webService服务发布成功。</p>
<p> </p>
<p>5、 运行客户端代码访问webService</p>
<p>右键 run as 选择java application,控制台打印如图:</p>
<p><a>20140805134838.jpg</a></p>
<p><img src="http://img.blog.csdn.net/20140805140607201?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVfc2hlbmd5YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""><br></p>
<p>Ok,客户端访问也成功了。</p>
<p> 此篇实现了webService服务的发布以及在本工程下的客户端调用服务的示例,或许不是很直观。</p>
<p>请看下一篇:<span style="font-size:10px;color:rgb(51,51,51);text-decoration:none;font-family:'Microsoft YaHei';line-height:30px;"><a href="http://blog.csdn.net/hu_shengyang/article/details/38384839" style="color:rgb(51,51,51);text-decoration:none;font-family:'Microsoft YaHei';line-height:30px;">CXF客户端代码生成与服务调用(二)</a></span></p>
<p>http://blog.csdn.net/hu_shengyang/article/details/38384839<br></p>
<h1><span style="font-size:12px;font-weight:normal;">本文参照了:<a href="http://www.cnblogs.com/frankliiu-java/articles/1641949.html"><span>使用</span><span> CXF</span><span>做</span><span>
webservice</span><span>简单例子</span></a></span></h1>
<p><a href="http://www.cnblogs.com/frankliiu-java/articles/1641949.html">http://www.cnblogs.com/frankliiu-java/articles/1641949.html</a></p>
<p> </p>
</div>
<div class="article_bar clearfix">
<div class="artical_tag">
<span class="original">
原创 </span>
<span class="time">2014年08月05日 14:04:16</span>
</div>
<ul class="article_tags clearfix csdn-tracking-statistics" data-mod="popu_377" style="display: none;">
<li class="tit">标签:</li>
<!-- [startarticletags]-->
<!-- [endarticletags]-->
</ul>
<ul class="right_bar">
<li><button class="btn-noborder"><i class="icon iconfont icon-read"></i><span class="txt">56588</span></button></li>
<li class="edit" style="display: none;">
<a class="btn-noborder" href="http://write.blog.csdn.net/postedit/38384597">
<i class="icon iconfont icon-bianji"></i><span class="txt">编辑</span>
</a>
</li>
<li class="del" style="display: none;">
<a class="btn-noborder" onclick="javascript:deleteArticle(fileName);return false;">
<i class="icon iconfont icon-shanchu"></i><span class="txt">删除</span>
</a>
</li>
</ul>
</div>
<div id="article_content" class="article_content csdn-tracking-statistics" data-mod="popu_519" data-dsm="post" style="height: 1521px; overflow: hidden;">
<p><br></p>
<p>以前工作中也用CXF,但都是用别人现成搭好的环境,这次自己重头搭建一遍环境。过程中也有遇到的问题,也做了简单的整理。</p>
<p>对于CXF是干什么用的,我不想多说,大家都知道这是我们在java编程中webService技术的一种实现工具。我们说说为什么用CXF来实现webService:</p>
<p>1. Java的webService实现本身就是一个很耗性能的实现方案(xml与java对象之间在服务端以及客户端的互转比较消耗性能)</p>
<p>2. 目前java主流的webService应用以CXF、AXIS2为主;</p>
<p>3. 通过网络渠道的了解,目前CXF的效率要比AXIS2高出至少50%;</p>
<p>4. 另外有一个webService的工具metro的效率比CXF高出10%;</p>
<p>5. CXF的实现资料网上可以随便找出一大堆,metro的资料相对少一些;</p>
<p>6. CXF在java应用实现中已经很成熟,企业更倾向于用这样一个成熟的解决方案;</p>
<p>基于以上原因,我选择CXF来实现webService。</p>
<p>参考资料:</p>
<p>Java Web 服务: CXF 性能比较----CXF 与最新版本的 Axis2 和 Metro 之间的性能对比</p>
<p><a href="http://www.ibm.com/developerworks/cn/java/j-jws14/">http://www.ibm.com/developerworks/cn/java/j-jws14/</a></p>
<p> </p>
<p>一 以annotation注解方式实现发布webService应用</p>
<p>1、 基础环境</p>
<p>新建java web工程cxf之后,下载cxf工具包。解压CXF之后,把cxf工具包lib下的jar包全部放到工程的lib下。</p>
<p>此处用到的cxf工具包版本为:apache-cxf-2.7.12</p>
<p>下载地址:</p>
<p><a href="http://www.apache.org/dyn/closer.cgi?path=/cxf/2.7.12/apache-cxf-2.7.12.zip">http://www.apache.org/dyn/closer.cgi?path=/cxf/2.7.12/apache-cxf-2.7.12.zip</a></p>
<p> </p>
<p>2、 编写服务接口</p>
<p>见文件<a>HelloWorld.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 906px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.server; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> java.util.List; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> javax.jws.WebParam; </span></span></li><li class=""><span><span class="keyword">import</span><span> javax.jws.WebService; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">import</span><span> com.hsy.pojo.User; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="annotation">@WebService</span><span> </span></span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">interface</span><span> HelloWorld { </span></span></li><li class=""><span> String sayHi(<span class="annotation">@WebParam</span><span>(name=</span><span class="string">"text"</span><span>)String text); </span></span></li><li class="alt"><span> String sayHiToUser(User user); </span></li><li class=""><span> String[] SayHiToUserList(List<User> userList); </span></li><li class="alt"><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.server;
import java.util.List;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.hsy.pojo.User;
@WebService
public interface HelloWorld {
String sayHi(@WebParam(name="text")String text);
String sayHiToUser(User user);
String[] SayHiToUserList(List<User> userList);
}
</pre><br><br><p></p>
<p> </p>
<p>3、 服务接口实现</p>
<p>见文件<a>HelloWorldImpl.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 1363px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_2" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.server; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> java.util.LinkedHashMap; </span></span></li><li class=""><span><span class="keyword">import</span><span> java.util.List; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> java.util.Map; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> javax.jws.WebParam; </span></span></li><li class=""><span><span class="keyword">import</span><span> javax.jws.WebService; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">import</span><span> com.hsy.pojo.User; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="annotation">@WebService</span><span>(endpointInterface=</span><span class="string">"com.hsy.server.HelloWorld"</span><span>,serviceName=</span><span class="string">"HelloWorld"</span><span>) </span></span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> HelloWorldImpl </span><span class="keyword">implements</span><span> HelloWorld { </span></span></li><li class=""><span> Map<Integer, User> users = <span class="keyword">new</span><span> LinkedHashMap<Integer, User>(); </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">public</span><span> String sayHi(</span><span class="annotation">@WebParam</span><span>(name = </span><span class="string">"text"</span><span>) String text) { </span></span></li><li class="alt"><span> <span class="keyword">return</span><span> </span><span class="string">"Hello,"</span><span>+text; </span></span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">public</span><span> String sayHiToUser(User user) { </span></span></li><li class="alt"><span> users.put(users.size()+<span class="number">1</span><span>, user); </span></span></li><li class=""><span> <span class="keyword">return</span><span> </span><span class="string">"Hello,"</span><span>+user.getName(); </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> String[] SayHiToUserList(List<User> userList) { </span></span></li><li class=""><span> String[] result = <span class="keyword">new</span><span> String[userList.size()]; </span></span></li><li class="alt"><span> <span class="keyword">int</span><span> i = </span><span class="number">0</span><span>; </span></span></li><li class=""><span> <span class="keyword">for</span><span>(User u:userList){ </span></span></li><li class="alt"><span> result[i] = <span class="string">"Hello "</span><span> + u.getName(); </span></span></li><li class=""><span> i++; </span></li><li class="alt"><span> } </span></li><li class=""><span> <span class="keyword">return</span><span> result; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">/**</span> </span></li><li class=""><span><span class="comment"> * @param args</span> </span></li><li class="alt"><span><span class="comment"> */</span><span> </span></span></li><li class=""><span> <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) { </span></span></li><li class="alt"><span> <span class="comment">// TODO Auto-generated method stub</span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.server;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.jws.WebParam;
import javax.jws.WebService;
import com.hsy.pojo.User;
@WebService(endpointInterface="com.hsy.server.HelloWorld",serviceName="HelloWorld")
public class HelloWorldImpl implements HelloWorld {
Map<Integer, User> users = new LinkedHashMap<Integer, User>();
public String sayHi(@WebParam(name = "text") String text) {
return "Hello,"+text;
}
public String sayHiToUser(User user) {
users.put(users.size()+1, user);
return "Hello,"+user.getName();
}
public String[] SayHiToUserList(List<User> userList) {
String[] result = new String[userList.size()];
int i = 0;
for(User u:userList){
result[i] = "Hello " + u.getName();
i++;
}
return result;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
</pre><br><p></p>
<p>4、 发布服务app</p>
<p>见文件<a>webServiceApp.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 2276px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_3" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_3" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=3&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.server; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> javax.xml.ws.Endpoint; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> webServiceApp { </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">/**</span> </span></li><li class=""><span><span class="comment"> * @param args</span> </span></li><li class="alt"><span><span class="comment"> */</span><span> </span></span></li><li class=""><span> <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) { </span></span></li><li class="alt"><span> System.out.println(<span class="string">"web service start"</span><span>); </span></span></li><li class=""><span> HelloWorldImpl implementor = <span class="keyword">new</span><span> HelloWorldImpl(); </span></span></li><li class="alt"><span> String address = <span class="string">"http://localhost:8080/helloWorld"</span><span>; </span></span></li><li class=""><span> Endpoint.publish(address, implementor); </span></li><li class="alt"><span> System.out.println(<span class="string">"web service started"</span><span>); </span></span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.server;
import javax.xml.ws.Endpoint;
public class webServiceApp {
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("web service start");
HelloWorldImpl implementor = new HelloWorldImpl();
String address = "http://localhost:8080/helloWorld";
Endpoint.publish(address, implementor);
System.out.println("web service started");
}
}
</pre><br><br><p></p>
<p><br></p>
<p>右键 run as 选择java application发布服务;然后在浏览器输入地址:<a href="http://localhost:8080/helloWorld?wsdl">http://localhost:8080/helloWorld?wsdl</a></p>
<p>如图:<a>20140805132120.jpg</a></p>
<p><img src="http://img.blog.csdn.net/20140805135841500?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVfc2hlbmd5YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""><br></p>
<p>说明webService服务发布成功。</p>
<p> </p>
<p>5、 客户端访问服务</p>
<p>见文件<a>HelloWorldClient.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 3312px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_4" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_4" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=4&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.client; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> org.apache.cxf.jaxws.JaxWsProxyFactoryBean; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> com.hsy.pojo.User; </span></span></li><li class=""><span><span class="keyword">import</span><span> com.hsy.server.HelloWorld; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> HelloWorldClient { </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment"> * @param args</span> </span></li><li class=""><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) { </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">//首先右键run as 运行com.hsy.server.webServiceApp类,然后再运行这段客户端代码</span><span> </span></span></li><li class=""><span> JaxWsProxyFactoryBean jwpfb = <span class="keyword">new</span><span> JaxWsProxyFactoryBean(); </span></span></li><li class="alt"><span> jwpfb.setServiceClass(HelloWorld.<span class="keyword">class</span><span>); </span></span></li><li class=""><span> jwpfb.setAddress(<span class="string">"http://localhost:8080/helloWorld"</span><span>); </span></span></li><li class="alt"><span> HelloWorld hw = (HelloWorld) jwpfb.create(); </span></li><li class=""><span> User user = <span class="keyword">new</span><span> User(); </span></span></li><li class="alt"><span> user.setName(<span class="string">"马克思"</span><span>); </span></span></li><li class=""><span> user.setDescription(<span class="string">"怀念马克思"</span><span>); </span></span></li><li class="alt"><span> System.out.println(hw.sayHiToUser(user)); </span></li><li class=""><span> </span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.client;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import com.hsy.pojo.User;
import com.hsy.server.HelloWorld;
public class HelloWorldClient {
/**
* @param args
*/
public static void main(String[] args) {
//首先右键run as 运行com.hsy.server.webServiceApp类,然后再运行这段客户端代码
JaxWsProxyFactoryBean jwpfb = new JaxWsProxyFactoryBean();
jwpfb.setServiceClass(HelloWorld.class);
jwpfb.setAddress("http://localhost:8080/helloWorld");
HelloWorld hw = (HelloWorld) jwpfb.create();
User user = new User();
user.setName("马克思");
user.setDescription("怀念马克思");
System.out.println(hw.sayHiToUser(user));
}
}
</pre><br><br><p></p>
<p>右键 run as 选择java application,控制台打印如图:</p>
<p><a>20140805132610.jpg</a></p>
<p><img src="http://img.blog.csdn.net/20140805140001218?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVfc2hlbmd5YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""><br></p>
<p>Ok,客户端访问也成功了。</p>
<p>6、 附:</p>
<p><a>User.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 4251px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_5" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_5" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=5&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.pojo; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> java.io.Serializable; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="annotation">@SuppressWarnings</span><span>(</span><span class="string">"serial"</span><span>) </span></span></li><li class=""><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> User </span><span class="keyword">implements</span><span> Serializable { </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="keyword">private</span><span> String id; </span></span></li><li class="alt"><span> <span class="keyword">private</span><span> String name; </span></span></li><li class=""><span> <span class="keyword">private</span><span> String age; </span></span></li><li class="alt"><span> <span class="keyword">private</span><span> String description; </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> User() { </span></span></li><li class=""><span> <span class="keyword">super</span><span>(); </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> String getId() { </span></span></li><li class=""><span> <span class="keyword">return</span><span> id; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> setId(String id) { </span></span></li><li class=""><span> <span class="keyword">this</span><span>.id = id; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> String getName() { </span></span></li><li class=""><span> <span class="keyword">return</span><span> name; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> setName(String name) { </span></span></li><li class=""><span> <span class="keyword">this</span><span>.name = name; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> String getAge() { </span></span></li><li class=""><span> <span class="keyword">return</span><span> age; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> setAge(String age) { </span></span></li><li class=""><span> <span class="keyword">this</span><span>.age = age; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> String getDescription() { </span></span></li><li class=""><span> <span class="keyword">return</span><span> description; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">void</span><span> setDescription(String description) { </span></span></li><li class=""><span> <span class="keyword">this</span><span>.description = description; </span></span></li><li class="alt"><span> } </span></li><li class=""><span> </span></li><li class="alt"><span> </span></li><li class=""><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.pojo;
import java.io.Serializable;
@SuppressWarnings("serial")
public class User implements Serializable {
private String id;
private String name;
private String age;
private String description;
public User() {
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
</pre><br><br><p></p>
<p> </p>
<p>二与spring集成实现webService</p>
<p>1、 配置web.xml</p>
<p>见文件<a>web.xml</a></p>
<p></p>
<div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 245px; top: 5362px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_6" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_6" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=6&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span class="tag"><?</span><span class="tag-name">xml</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span> </span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"UTF-8"</span><span class="tag">?></span><span> </span></span></li><li class=""><span><span class="tag"><</span><span class="tag-name">web-app</span><span> </span><span class="attribute">xmlns:xsi</span><span>=</span><span class="attribute-value">"http://www.w3.org/2001/XMLSchema-instance"</span><span> </span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">"http://java.sun.com/xml/ns/javaee"</span><span> </span><span class="attribute">xmlns:web</span><span>=</span><span class="attribute-value">"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</span><span> </span><span class="attribute">xsi:schemaLocation</span><span>=</span><span class="attribute-value">"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"WebApp_ID"</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">"2.5"</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">display-name</span><span class="tag">></span><span>cxf</span><span class="tag"></</span><span class="tag-name">display-name</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">welcome-file-list</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>index.html</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>index.htm</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>index.jsp</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>default.html</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>default.htm</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">welcome-file</span><span class="tag">></span><span>default.jsp</span><span class="tag"></</span><span class="tag-name">welcome-file</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"></</span><span class="tag-name">welcome-file-list</span><span class="tag">></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">context-param</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">param-name</span><span class="tag">></span><span>contextConfigLocation</span><span class="tag"></</span><span class="tag-name">param-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">param-value</span><span class="tag">></span><span>WEB-INF/classes/applicationContext.xml</span><span class="tag"></</span><span class="tag-name">param-value</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">context-param</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">listener</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">listener-class</span><span class="tag">></span><span> </span></span></li><li class=""><span> org.springframework.web.context.ContextLoaderListener </span></li><li class="alt"><span> <span class="tag"></</span><span class="tag-name">listener-class</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">listener</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">servlet</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">servlet-name</span><span class="tag">></span><span>CXFServlet</span><span class="tag"></</span><span class="tag-name">servlet-name</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">servlet-class</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> org.apache.cxf.transport.servlet.CXFServlet </span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">servlet-class</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">load-on-startup</span><span class="tag">></span><span>1</span><span class="tag"></</span><span class="tag-name">load-on-startup</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">servlet</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">servlet-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">servlet-name</span><span class="tag">></span><span>CXFServlet</span><span class="tag"></</span><span class="tag-name">servlet-name</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>/webservice/*</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"></</span><span class="tag-name">servlet-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> </span></li><li class=""><span> </span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comments"><!-- 字符过滤器 --></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-class</span><span class="tag">></span><span>org.springframework.web.filter.CharacterEncodingFilter</span><span class="tag"></</span><span class="tag-name">filter-class</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">init-param</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">param-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">param-name</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">param-value</span><span class="tag">></span><span>UTF-8</span><span class="tag"></</span><span class="tag-name">param-value</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"></</span><span class="tag-name">init-param</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">init-param</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">param-name</span><span class="tag">></span><span>forceEncoding</span><span class="tag"></</span><span class="tag-name">param-name</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">param-value</span><span class="tag">></span><span>true</span><span class="tag"></</span><span class="tag-name">param-value</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"></</span><span class="tag-name">init-param</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.jsp</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.html</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.do</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.action</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.jsp</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.html</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.do</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">filter-name</span><span class="tag">></span><span>encoding</span><span class="tag"></</span><span class="tag-name">filter-name</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">url-pattern</span><span class="tag">></span><span>*.3g</span><span class="tag"></</span><span class="tag-name">url-pattern</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">filter-mapping</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="tag"></</span><span class="tag-name">web-app</span><span class="tag">></span><span> </span></span></li></ol></div><pre class="html" name="code" style="display: none;"><?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>cxf</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/webservice/*</url-pattern>
</servlet-mapping>
<!-- 字符过滤器 -->
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.3g</url-pattern>
</filter-mapping>
</web-app></pre><br><br><p></p>
<p> </p>
<p>2、 配置applicationContext.xml</p>
<p>见文件<a>applicationContext.xml</a></p>
<p></p>
<div class="dp-highlighter bg_html"><div class="bar"><div class="tools"><b>[html]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 245px; top: 7204px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_7" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_7" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=7&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-xml"><li class="alt"><span><span class="tag"><?</span><span class="tag-name">xml</span><span> </span><span class="attribute">version</span><span>=</span><span class="attribute-value">"1.0"</span><span> </span><span class="attribute">encoding</span><span>=</span><span class="attribute-value">"UTF-8"</span><span class="tag">?></span><span> </span></span></li><li class=""><span><span class="tag"><</span><span class="tag-name">beans</span><span> </span><span class="attribute">xmlns</span><span>=</span><span class="attribute-value">"http://www.springframework.org/schema/beans"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">xmlns:xsi</span><span>=</span><span class="attribute-value">"http://www.w3.org/2001/XMLSchema-instance"</span><span> </span></span></li><li class=""><span> <span class="attribute">xmlns:jaxws</span><span>=</span><span class="attribute-value">"http://cxf.apache.org/jaxws"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">xsi:schemaLocation</span><span>=" </span></span></li><li class=""><span> http://www.springframework.org/schema/beans </span></li><li class="alt"><span> http://www.springframework.org/schema/beans/spring-beans.xsd </span></li><li class=""><span> http://cxf.apache.org/jaxws </span></li><li class="alt"><span> http://cxf.apache.org/schemas/jaxws.xsd"<span class="tag">></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">import</span><span> </span><span class="attribute">resource</span><span>=</span><span class="attribute-value">"classpath:META-INF/cxf/cxf.xml"</span><span class="tag">/></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">import</span><span> </span><span class="attribute">resource</span><span>=</span><span class="attribute-value">"classpath:META-INF/cxf/cxf-extension-soap.xml"</span><span class="tag">/></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">import</span><span> </span><span class="attribute">resource</span><span>=</span><span class="attribute-value">"classpath:META-INF/cxf/cxf-servlet.xml"</span><span class="tag">/></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">jaxws:endpoint</span><span> </span></span></li><li class=""><span> <span class="attribute">id</span><span>=</span><span class="attribute-value">"helloWorld"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">implementor</span><span>=</span><span class="attribute-value">"com.hsy.server.HelloWorldImpl"</span><span> </span></span></li><li class=""><span> <span class="attribute">address</span><span>=</span><span class="attribute-value">"/helloWorld"</span><span> </span><span class="tag">/></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">bean</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"client"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">class</span><span>=</span><span class="attribute-value">"com.hsy.server.HelloWorld"</span><span> </span></span></li><li class=""><span> <span class="attribute">factory-bean</span><span>=</span><span class="attribute-value">"clientFactory"</span><span> </span></span></li><li class="alt"><span> <span class="attribute">factory-method</span><span>=</span><span class="attribute-value">"create"</span><span class="tag">/></span><span> </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">bean</span><span> </span><span class="attribute">id</span><span>=</span><span class="attribute-value">"clientFactory"</span><span> </span><span class="attribute">class</span><span>=</span><span class="attribute-value">"org.apache.cxf.jaxws.JaxWsProxyFactoryBean"</span><span class="tag">></span><span> </span></span></li><li class=""><span> <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"serviceClass"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"com.hsy.server.HelloWorld"</span><span class="tag">/></span><span> </span></span></li><li class="alt"><span> <span class="tag"><</span><span class="tag-name">property</span><span> </span><span class="attribute">name</span><span>=</span><span class="attribute-value">"address"</span><span> </span><span class="attribute">value</span><span>=</span><span class="attribute-value">"http://localhost:8080/cxf/webservice/helloWorld"</span><span class="tag">/></span><span> </span></span></li><li class=""><span> <span class="tag"></</span><span class="tag-name">bean</span><span class="tag">></span><span> </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="tag"></</span><span class="tag-name">beans</span><span class="tag">></span><span> </span></span></li></ol></div><pre class="html" name="code" style="display: none;"><?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml"/>
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
<jaxws:endpoint
id="helloWorld"
implementor="com.hsy.server.HelloWorldImpl"
address="/helloWorld" />
<bean id="client"
class="com.hsy.server.HelloWorld"
factory-bean="clientFactory"
factory-method="create"/>
<bean id="clientFactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.hsy.server.HelloWorld"/>
<property name="address" value="http://localhost:8080/cxf/webservice/helloWorld"/>
</bean>
</beans></pre><br><br><p></p>
<p> </p>
<p>3、 修改客户端代码</p>
<p>见文件<a>HelloWorldClient.java</a></p>
<p></p>
<div class="dp-highlighter bg_java"><div class="bar"><div class="tools"><b>[java]</b> <a href="#" class="ViewSource" title="view plain" onclick="dp.sh.Toolbar.Command('ViewSource',this);return false;">view plain</a><span class="tracking-ad" data-mod="popu_168"> <a href="#" class="CopyToClipboard" title="copy" onclick="dp.sh.Toolbar.Command('CopyToClipboard',this);return false;">copy</a><div style="position: absolute; left: 243px; top: 7931px; width: 16px; height: 16px; z-index: 99;"><embed id="ZeroClipboardMovie_8" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_8" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=8&width=16&height=16" wmode="transparent"></div></span><span class="tracking-ad" data-mod="popu_169"> <a href="#" class="PrintSource" title="print" onclick="dp.sh.Toolbar.Command('PrintSource',this);return false;">print</a></span><a href="#" class="About" title="?" onclick="dp.sh.Toolbar.Command('About',this);return false;">?</a></div></div><ol start="1" class="dp-j"><li class="alt"><span><span class="keyword">package</span><span> com.hsy.client; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> java.util.ArrayList; </span></span></li><li class=""><span><span class="keyword">import</span><span> java.util.List; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">import</span><span> org.springframework.beans.factory.BeanFactory; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.springframework.beans.factory.xml.XmlBeanFactory; </span></span></li><li class=""><span><span class="keyword">import</span><span> org.springframework.context.ApplicationContext; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.springframework.context.support.ClassPathXmlApplicationContext; </span></span></li><li class=""><span><span class="keyword">import</span><span> org.springframework.core.io.FileSystemResource; </span></span></li><li class="alt"><span><span class="keyword">import</span><span> org.springframework.core.io.Resource; </span></span></li><li class=""><span> </span></li><li class="alt"><span><span class="keyword">import</span><span> com.hsy.pojo.User; </span></span></li><li class=""><span><span class="keyword">import</span><span> com.hsy.server.HelloWorld; </span></span></li><li class="alt"><span> </span></li><li class=""><span><span class="keyword">public</span><span> </span><span class="keyword">class</span><span> HelloWorldClient { </span></span></li><li class="alt"><span> </span></li><li class=""><span> <span class="comment">/**</span> </span></li><li class="alt"><span><span class="comment"> * @param args</span> </span></li><li class=""><span><span class="comment"> */</span><span> </span></span></li><li class="alt"><span> <span class="keyword">public</span><span> </span><span class="keyword">static</span><span> </span><span class="keyword">void</span><span> main(String[] args) { </span></span></li><li class=""><span> </span></li><li class="alt"><span> <span class="comment">//Resource resource= new FileSystemResource("F:/workspaces4me2013/.metadata/.me_tcat/WEB-INF/classes/applicationContext.xml"); </span><span> </span></span></li><li class=""><span> <span class="comment">//BeanFactory factory= new XmlBeanFactory(resource ); </span><span> </span></span></li><li class="alt"><span> ApplicationContext factory = <span class="keyword">new</span><span> ClassPathXmlApplicationContext(</span><span class="string">"/applicationContext.xml"</span><span>); </span></span></li><li class=""><span> HelloWorld client = (HelloWorld)factory.getBean(<span class="string">"client"</span><span>); </span></span></li><li class="alt"><span> User user1 = <span class="keyword">new</span><span> User(); </span></span></li><li class=""><span> user1.setName(<span class="string">"马克思"</span><span>); </span></span></li><li class="alt"><span> user1.setDescription(<span class="string">"怀念马克思"</span><span>); </span></span></li><li class=""><span> User user2 = <span class="keyword">new</span><span> User(); </span></span></li><li class="alt"><span> user2.setName(<span class="string">"恩格斯"</span><span>); </span></span></li><li class=""><span> user2.setDescription(<span class="string">"怀念恩格斯"</span><span>); </span></span></li><li class="alt"><span> List<User> userList= <span class="keyword">new</span><span> ArrayList<User>(); </span></span></li><li class=""><span> userList.add(user1); </span></li><li class="alt"><span> userList.add(user2); </span></li><li class=""><span> String[] res = client.SayHiToUserList(userList); </span></li><li class="alt"><span> System.out.println(res[<span class="number">0</span><span>]); </span></span></li><li class=""><span> System.out.println(res[<span class="number">1</span><span>]); </span></span></li><li class="alt"><span> </span></li><li class=""><span> } </span></li><li class="alt"><span> </span></li><li class=""><span>} </span></li></ol></div><pre class="java" name="code" style="display: none;">package com.hsy.client;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
import com.hsy.pojo.User;
import com.hsy.server.HelloWorld;
public class HelloWorldClient {
/**
* @param args
*/
public static void main(String[] args) {
//Resource resource= new FileSystemResource("F:/workspaces4me2013/.metadata/.me_tcat/WEB-INF/classes/applicationContext.xml");
//BeanFactory factory= new XmlBeanFactory(resource );
ApplicationContext factory = new ClassPathXmlApplicationContext("/applicationContext.xml");
HelloWorld client = (HelloWorld)factory.getBean("client");
User user1 = new User();
user1.setName("马克思");
user1.setDescription("怀念马克思");
User user2 = new User();
user2.setName("恩格斯");
user2.setDescription("怀念恩格斯");
List<User> userList= new ArrayList<User>();
userList.add(user1);
userList.add(user2);
String[] res = client.SayHiToUserList(userList);
System.out.println(res[0]);
System.out.println(res[1]);
}
}
</pre><br><br><p></p>
<p> </p>
<p>4、 启动tamcat发布webService</p>
<p>然后在浏览器输入地址:<a href="http://localhost:8080/cxf/webservice/helloWorld?wsdl">http://localhost:8080/cxf/webservice/helloWorld?wsdl</a></p>
<p>如图:<a>20140805133642.jpg</a></p>
<p><img src="http://img.blog.csdn.net/20140805140452789?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVfc2hlbmd5YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""><br></p>
<p>说明webService服务发布成功。</p>
<p> </p>
<p>5、 运行客户端代码访问webService</p>
<p>右键 run as 选择java application,控制台打印如图:</p>
<p><a>20140805134838.jpg</a></p>
<p><img src="http://img.blog.csdn.net/20140805140607201?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaHVfc2hlbmd5YW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""><br></p>
<p>Ok,客户端访问也成功了。</p>
<p> 此篇实现了webService服务的发布以及在本工程下的客户端调用服务的示例,或许不是很直观。</p>
<p>请看下一篇:<span style="font-size:10px;color:rgb(51,51,51);text-decoration:none;font-family:'Microsoft YaHei';line-height:30px;"><a href="http://blog.csdn.net/hu_shengyang/article/details/38384839" style="color:rgb(51,51,51);text-decoration:none;font-family:'Microsoft YaHei';line-height:30px;">CXF客户端代码生成与服务调用(二)</a></span></p>
<p>http://blog.csdn.net/hu_shengyang/article/details/38384839<br></p>
<h1><span style="font-size:12px;font-weight:normal;">本文参照了:<a href="http://www.cnblogs.com/frankliiu-java/articles/1641949.html"><span>使用</span><span> CXF</span><span>做</span><span>
webservice</span><span>简单例子</span></a></span></h1>
<p><a href="http://www.cnblogs.com/frankliiu-java/articles/1641949.html">http://www.cnblogs.com/frankliiu-java/articles/1641949.html</a></p>
<p> </p>
</div>
阅读全文
0 0
- CXF
- CXF
- cxf
- CXF
- CXF
- CXF
- CXF
- Cxf
- cxf
- CXF
- cxf
- CXF
- CXF
- CXF
- CXF
- cxf
- CXF
- CXF
- 第十六周周末总结
- python 学习笔记之(四)while循环处理列表和字典
- BUG排查:PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1040] Too ma
- Stanford coursera Andrew Ng 机器学习课程编程作业(Exercise 1)Python3.x
- 20171216
- CXF
- TCP传输层协议
- 152. Maximum Product Subarray
- 2017年12月17日训练笔记
- 剑指offer 滑动窗口的最大值
- 网络编程三要素
- python列表的基本知识
- URAL1947 Meander 思路
- 关于android中的两大布局LinearLayout、RelativeLayout