﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-紫蝶∏飛揚↗-文章分类-WEBService</title><link>http://www.blogjava.net/algz/category/47619.html</link><description>Purple Butterfly Flying
我的QQ群:7101519
专注于SOA开发,侧重于银行业务,偏向于FLEX前端设计.</description><language>zh-cn</language><lastBuildDate>Fri, 14 Jan 2011 14:10:54 GMT</lastBuildDate><pubDate>Fri, 14 Jan 2011 14:10:54 GMT</pubDate><ttl>60</ttl><item><title>WebService开发流程（AAXIS、JAX-WS、XFire框架）</title><link>http://www.blogjava.net/algz/articles/342973.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Fri, 14 Jan 2011 04:10:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/342973.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/342973.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/342973.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/342973.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/342973.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 导言：WebService存在于互联网当中的组件，具有独立性，跨平台和技术，通过URL进行定位调用；优点是可以重复使用组件服务可以跨平台和技术，实现不同程序之间的交互可以使用组件服务灵活组合，提高资源利用率，节省资源<br />
&nbsp;&nbsp; 一、WebService开发流程<br />
&nbsp;&nbsp; --AXIS框架的使用</p>
<p>预先建立一个WebService工程<br />
&nbsp;&nbsp; a.引入开发包<br />
&nbsp;&nbsp; b.配置web.xml，添加org.apache.axis.transport.http.AxisServlet映射和url-pattern.<br />
&nbsp;&nbsp; c.编写WebService的接口和实现类<br />
&nbsp;&nbsp; d.在WEB-INF目录下创建server-config.wsdd发布文件,定义发布的Service组件:</p>
<p>服务名-对应的类名-方法名</p>
<p>&amp;&amp;e定义返回类型：如果WebService服务的方法用到自定义类型,需要在发布文件中定义&lt;beanMapping&gt;映射</p>
<p>&nbsp;&nbsp; --JAX-WS框架的使用<br />
&nbsp; a.在MyEclipse中建立一个webService工程（假设叫myJAXWS），使用JAX-WS框架。<br />
&nbsp; b.写一个普通的JAVA类（假设叫myBean）<br />
&nbsp;c.在myJAXWS，中通过JAVA类myBean建立通过webService(由MyEclipse自动生成)<br />
&nbsp; d.可以通过http://localhost:8888/工程名/myBeanPort查看可用的webService;<br />
&nbsp;你可以http://localhost:8888/工程名/myBeanPort?wsdl查看wsdl文件（xml格式）<br />
&nbsp;e.如果webService中返回类型为自定义对象，那么可用考虑将对象转化为字符串传送。<br />
&nbsp;注：对象与字符串相互转化，可以考虑用JOX的BeanXMLMapping技术。</p>
<p><br />
&nbsp;&nbsp; --XFire框架的使用</p>
<p>预先建立一个WebService工程。<br />
&nbsp;&nbsp; a.引入开发包(创建一个XFire工程) <br />
&nbsp;&nbsp; b.配置web.xml，添加org.codehaus.xfire.transport.http.XFireConfigurableServlet映射</p>
<p>c.编写WebService的接口和实现类 <br />
&nbsp;&nbsp; d.在services.xml中定义要发布的Service组件<br />
&nbsp;&nbsp; e.如果WebService服务的方法用到自定义类型,需要在组件接口同级目录下编写(接口名.aegis.xml文件)，定义自定义类型</p>
<p>f.访问service路径<br />
http://localhost:8888/XFireWebServiceDelete/services/XuliangXFire?wsdl<br />
&nbsp;&nbsp; 使用webService<br />
通过XFire自动生成：<br />
见一个普通的JAVA工程，新建包，在包下右键other---&gt;MyEclipse---&gt;webservice---&gt;ServiceClient---&gt;自动wsdl的路径，即可。</p>
<p>&nbsp;</p>
<p>二、WebService基础知识</p>
<p>1.什么WebService<br />
&nbsp;&nbsp;&nbsp; 存在于互联网当中的组件，具有独立性，<br />
跨平台和技术，通过URL进行定位调用<br />
2.有什么好处，特点<br />
&nbsp;&nbsp;&nbsp; 可以重复使用组件服务<br />
　可以跨平台和技术，实现不同程序之间的交互<br />
　可以使用组件服务灵活组合，提高资源利用率，节省资源<br />
3.相关关键词及概念<br />
　HTTP+XML　<br />
　SOAP(Simple Object Access Protocol):简单对象访问协议<br />
　WSDL(Web Service Description Language):WebService描述语言<br />
　UDDI(Universal Description、Discovery、and Integration):用于提供WebService注册、查找等功能<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 转自：<a href="http://blog.sina.com.cn/s/blog_4f9ce8f30100k9a1.html">http://blog.sina.com.cn/s/blog_4f9ce8f30100k9a1.html</a></p>
<img src ="http://www.blogjava.net/algz/aggbug/342973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2011-01-14 12:10 <a href="http://www.blogjava.net/algz/articles/342973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>怀念 Xfire 为webService所做的贡献!---记住一个时代的结束.</title><link>http://www.blogjava.net/algz/articles/342970.html</link><dc:creator>紫蝶∏飛揚↗</dc:creator><author>紫蝶∏飛揚↗</author><pubDate>Fri, 14 Jan 2011 03:28:00 GMT</pubDate><guid>http://www.blogjava.net/algz/articles/342970.html</guid><wfw:comment>http://www.blogjava.net/algz/comments/342970.html</wfw:comment><comments>http://www.blogjava.net/algz/articles/342970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/algz/comments/commentRss/342970.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/algz/services/trackbacks/342970.html</trackback:ping><description><![CDATA[Xfire 1.2 最后一个版本，他的简单、易用、友好的开发方式。<br />
&nbsp;&nbsp;&nbsp; 现在两个开源框架（Codehaus的Xfire及ObjectWeb的Celtix）合并CXF<br />
webService开发流程:<br />
1.先创建webService工程<br />
2.再创建N个 webService-strategic(策略)<br />
即工具自动配置在service.xml文件中<br />
<br />
英文详细开发流程：<a href="http://www.myeclipseide.com/index.php?module=htmlpages&amp;func=display&amp;pid=281">http://www.myeclipseide.com/index.php?module=htmlpages&amp;func=display&amp;pid=281</a><br />
<br />
由于Xfire的开发越来越少，所以其开发流程不在细述，以下内容转自：<a href="http://hi.baidu.com/200770842223/blog/item/6f73cca8aac705a3cb130c5b.html">http://hi.baidu.com/200770842223/blog/item/6f73cca8aac705a3cb130c5b.html</a><br />
&#8205;<br />
MyEclipse下XFire开发Webservice实例:<br />
<br />
&nbsp;最近在研究JAVA开发Webservice，发现网络上比较流行的几种选择AXIS、XFire、CFX(XFire的下一代)，前几天转了几篇关于这三种选择的比较的文章，对它们已经有了些概念。决定自己实践一个例子
<p>&nbsp;&nbsp;&nbsp;&nbsp; 在开始前，先介绍一些概念：<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp; XFire Java SOAP框架概述 (摘自：http://tech.it168.com/j/e/2006-10-28/200610281432707.shtml )<br />
&nbsp;&nbsp;&nbsp; MyEclipse Web Services是建立在XFire Java SOAP框架和工具基础上的, XFire是一款开源的Java SOAP框架。它拥有一个轻量级的信息处理模块，通过STAX来与SOAP信息相结合。提供了一个工作在Web Services下的简单API，支持POJO和schema开发. XFire支持 Web Services standards,Spring 整合, 支持JBI , 支持 JAXB ,XMLBeans,Java 5 和JAX-WS.并支持HTTP, JMS, XMPP, In-memory传输协议<br />
<br />
一、环境配置：MyEclipse7.0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JDK1.6<br />
二、创建Web Service Project<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1）在MyEclipse中选择File—&gt;New—&gt;Other，选择Web Service Project<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/ad42f7b342f03be8d8335a53.jpg" width="444" height="501" /></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2）Project Name：WebServiceServer，Framework：XFire，其他选项默认<br />
<img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/3c37baa796e7b1dad0435853.jpg" width="554" height="500" /></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 3）Next，这一步保持默认值<br />
&nbsp;&nbsp;&nbsp;&nbsp; 4）Project Library选择，选择XFire 1.2 Core Libraries</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/ea2030958097d404d0135e53.jpg" width="551" height="500" /></p>
<p>&nbsp;&nbsp;&nbsp; 5）Finish，创建成功后看到的工程目录如下：<br />
&nbsp;&nbsp;&nbsp; <img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/e250554b82c70abf83025c53.jpg" width="427" height="192" /></p>
<p>&nbsp;&nbsp;&nbsp; 6）完成以上5步后，查看WebRoot/WEB-INF/web.xml</p>
<p>&nbsp;&nbsp; 这里指明了当遇到/services/*请求时，将选用XFireConfigurableServlet来处理 &nbsp;&nbsp; <img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/e2008bf0d7d623e0a50f5253.jpg" width="786" height="325" /></p>
<p><br />
三、创建Web Service Code<br />
&nbsp;&nbsp;&nbsp; 1）通过File—&gt;New—&gt;Other—&gt;Web Services—&gt;Web Service wizard创建JAVA CODE<br />
&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/b111a2aff3db32b4faed5053.jpg" width="467" height="534" /></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 2）选择通过JAVA CLASS创建Web Service<br />
&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/971cb3fba239d22b024f5653.jpg" width="469" height="535" /></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 3）创建HelloWebService.java，通过New创建com.service package，向导将为工程自动创建对应的接口类与实现类<br />
&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/c8fe5364589b01bff6365453.jpg" width="467" height="535" /></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 创建成功后查看WebServices/services.xml，发现配置文件多了以下内容：<br />
&nbsp;&nbsp;&nbsp;&nbsp; <img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/c42557c326e5731ab219a85c.jpg" width="523" height="225" /></p>
<p>&nbsp;&nbsp;&nbsp; 4）修改HelloWebServiceImpl.java<br />
&nbsp;&nbsp;&nbsp; package com.service;<br />
&nbsp;&nbsp;&nbsp; //Generated by meteorWJ<br />
<br />
&nbsp;&nbsp; public class HelloWebServiceImpl implements IHelloWebService {<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp; public String example(String message) {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return getAuthor()+","+message;<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; private String getAuthor(){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return "meteorWJ";<br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; }</p>
<p>四、部署并测试WebSericeServer</p>
<p>&nbsp;&nbsp;&nbsp; 1）部署WebServiceServer<br />
&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; 在部署向导中选择项目、服务器<br />
&nbsp;&nbsp;&nbsp; <img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/4a22f255d2cd928bb645ae5c.jpg" width="524" height="594" /></p>
<p>&nbsp;&nbsp;&nbsp; 2）启动服务器<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; 3）测试WebService<br />
&nbsp;&nbsp; MyEclipse提供了一个Web Service Explorer来测试Web Service<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; 选择列表中的Launch SOAP Web Services Explorer&nbsp;&nbsp;</p>
<p style="text-align: left"><span><img class="blogimg" border="0" alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/3a3025545fa4eb17d0090629.jpg" small="0" /></span></p>
<p style="text-align: left">&nbsp;</p>
<p>&nbsp; <span style="color: #ff0000">如果找不到Launch SOAP Web Services Explorer和WSDL Page在哪儿，可以问我。</span><br />
<br />
&nbsp;&nbsp; 4）选择WSDL模式<br />
&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp; 5）在Explorer中选择WSDL Main，在右边的URL中输入<br />
&nbsp;&nbsp; <a href="http://localhost:9090/WebServiceServer/services/HelloWebService?WSDL">http://localhost:9090/WebServiceServer/services/HelloWebService?WSDL</a>，单击"Go"<br />
&nbsp;&nbsp; 其中9090是服务器端口号，services在之前的web.xml中指定<br />
&nbsp;&nbsp; 若在Status中显示成功打开WSDL文件则测试成功<span style="color: #ff0000">&nbsp;&nbsp;</span><br />
<img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/800a13c4d4913ae68326ac5c.jpg" width="1038" height="629" />&nbsp;<span style="color: #ff0000">&nbsp;若是没有成功，把localhost改为本机的ip地址。</span></p>
<p><span><img class="blogimg" border="0" alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/79fed673fc0dca538601b059.jpg" small="0" /></span><br />
&#8205;<br />
<br />
五、创建WebService客户端<br />
经过以上几步，我们已经成功发布了一个WebService，现在需要创建一个客户端来调用该服务<br />
1）创建Java Project：WebServiceClient<br />
2）引入MyEclipse Libraries<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 右键WebServiceClient—&gt;Build Path—&gt;Add Libraries<br />
<img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/8456bba9e7f2b6b31f17a25c.jpg" width="448" height="426" /></p>
<p>选择XFire 1.2 HTTP Client Libraries<br />
<img alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/b13537fc79c3f3cdb801a05c.jpg" width="450" height="427" /></p>
<p>&nbsp;&nbsp; 3）创建HelloWebService.java<br />
&nbsp;&nbsp; 在src目录下创建com.client.HelloWebService.java<br />
&nbsp;&nbsp; package com.client;<br />
<br />
&nbsp;&nbsp; import java.net.URL;<br />
&nbsp;&nbsp; import org.codehaus.xfire.client.Client;<br />
<br />
&nbsp;&nbsp; public class HelloWebService {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void main(String[] args) throws Exception<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Client client = new Client(new URL("http://localhost:9090/WebServiceServer/services/HelloWebService?wsdl"));<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Object[] results = client.invoke("example", new Object[] {"hello"});<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println((String) results[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp; } </p>
<p>右键点击Run As&gt;Java Application，在控制台中看到如下输出</p>
<p><span><img class="blogimg" border="0" alt="" src="http://hiphotos.baidu.com/200770842223/pic/item/411df4f3701402840b46e026.jpg" small="0" /></span><br />
<br />
</p>
<p>本次实例到此就算完成了。</p>
   <img src ="http://www.blogjava.net/algz/aggbug/342970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/algz/" target="_blank">紫蝶∏飛揚↗</a> 2011-01-14 11:28 <a href="http://www.blogjava.net/algz/articles/342970.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>