﻿<?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-小秋的家-文章分类-web service</title><link>http://www.blogjava.net/mycolby/category/45468.html</link><description>home</description><language>zh-cn</language><lastBuildDate>Fri, 06 Aug 2010 09:31:07 GMT</lastBuildDate><pubDate>Fri, 06 Aug 2010 09:31:07 GMT</pubDate><ttl>60</ttl><item><title>web service的JAVA开发(四)</title><link>http://www.blogjava.net/mycolby/articles/327946.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Wed, 04 Aug 2010 09:09:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/327946.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/327946.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/327946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/327946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/327946.html</trackback:ping><description><![CDATA[最近有空就研究一下web service，觉的现在有了xfire和axis之后，可以都不用了解soap是什么东东了，感觉有些工具太方便了，会使人停留在技术表面上，感觉自己完全为了应用而应用，可能这也是我的技术不能成为牛人的原因吧。今天于是乎把soap.wsdl东西又看了一遍。在找资料的过程中，我发现了一篇&#8220;java6出来了，我们还要xfire和axis有什么用?&#8221;，我一下子被吸引了，java6有这么一个新特性吗？于是我根据这篇文章写了一个例子，居然果真运行成功，唉。我只能长叹我对于一些新技术的落后呀。。<br />
下面权当给自己做一个笔记吧：如果只用java6来实现一个web service：<br />
新建一个java project，这里有人会问，应该建一个web project吧？嗯，如果是在看到这篇文章以前，我也会这么认为，但是有了java6，不需要了，看下面吧。<br />
&nbsp;1. 首先，我们新建一个名为：com.jdk.service的包名。<br />
&nbsp;2. 创建一个业务类：Hello.java ：<br />
&nbsp;package com.jdk.service;<br />
<br />
&nbsp;import javax.jws.WebMethod;<br />
&nbsp;javax.jws.WebService;<br />
&nbsp;import javax.jws.soap.SOAPBinding;<br />
<br />
&nbsp;@WebService(targetNamespace = "http://service.jdk.com")<br />
&nbsp;@SOAPBinding(style = SOAPBinding.Style.RPC)<br />
&nbsp;public class Hello {<br />
&nbsp;&nbsp; &nbsp; @WebMethod<br />
&nbsp; &nbsp;&nbsp; public String sayHello(String name){<br />
&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;&nbsp; return "hello:&nbsp;&nbsp; "+name;<br />
&nbsp;&nbsp; &nbsp; }<br />
&nbsp;}<br />
&nbsp; 3.明天继续接着写<br />
<br />
<img src ="http://www.blogjava.net/mycolby/aggbug/327946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2010-08-04 17:09 <a href="http://www.blogjava.net/mycolby/articles/327946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web service的JAVA开发(二)</title><link>http://www.blogjava.net/mycolby/articles/327551.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Fri, 30 Jul 2010 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/327551.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/327551.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/327551.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/327551.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/327551.html</trackback:ping><description><![CDATA[&nbsp; 昨天已经生成并成功显示了web service server端，今天我们来创建web service client端：<br />
&nbsp; 1.首先我们建一个java project，命名为：webclient的桌面应用工程.并新建包名为：com.client.login<br />
&nbsp; 2.创建xfire client,如图：<br />
&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webclient.JPG" width="447" height="425" /><br />
&nbsp; 3.点击next，设置如下：这里的web service，我们选择刚刚建好的webclient项目<br />
&nbsp; wdsl我们选择url:<img src="file:///C:/DOCUME%7E1/chung/LOCALS%7E1/Temp/moz-screenshot-1.png" alt="" />http://localhost:8080/webservice/services/Login?wsdl<br />
&nbsp; 如图：<br />
&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webclient2.JPG" width="456" height="364" />&nbsp; <br />
&nbsp; 4. 单击&#8220;Next&#8221;，如果失败，则会提示错误信息；如果成功，如图所示：<br />
&nbsp;&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webclient3.JPG" width="444" height="418" /><br />
&nbsp;&nbsp; 5.单击&#8220;Next&#8221;，客户端建立完成，如图：<br />
&nbsp;&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webclient4.JPG" width="256" height="250" /><br />
&nbsp;&nbsp;&nbsp; 6.下面我们打开LoginClient.java，修改public void main()方法如下：<br />
&nbsp;&nbsp;&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webclient5.JPG" width="480" height="256" /><br />
&nbsp;&nbsp; 7.我们运行，发现得到结果如下：<br />
&nbsp;&nbsp;&nbsp;&nbsp; 小秋 is logged<br />
&nbsp;&nbsp; OK，到这里，我们整个web service的server、client端都已经建立成功了！<br />
&nbsp; <br />
<br />
<img src ="http://www.blogjava.net/mycolby/aggbug/327551.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2010-07-30 11:21 <a href="http://www.blogjava.net/mycolby/articles/327551.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web service的JAVA开发(一)</title><link>http://www.blogjava.net/mycolby/articles/327496.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Thu, 29 Jul 2010 09:35:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/327496.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/327496.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/327496.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/327496.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/327496.html</trackback:ping><description><![CDATA[&nbsp; 第一种：用myeclipse创建webservice:<br />
1.首先新建web project,如图:<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webservice.JPG" width="461" height="418" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webservice2.JPG" width="468" height="426" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webservice3.JPG" width="472" height="427" /><br />
下面我们在该project下新建com.service.login包,后面将会用到。<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webservice4.JPG" width="459" height="441" /><br />
2.新建一个xml web service,如图：<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/xmlwebservice.JPG" width="474" height="455" /><br />
&nbsp;web services project :这里我们选择刚刚新建的web service project,名为：webservice<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/xmlwebservice2.JPG" width="469" height="375" /><br />
这里我们建一个Login的web service服务,myeclipse将会自动创建接口以及它的实现类，包名用我们前面新建的com.service.login<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/xmlwebservice3.JPG" width="470" height="374" /><br />
Ok.我们继续，现在让我们看看这个项目的目录结构<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webservice5.JPG" width="212" height="244" /><br />
我们看到com.service.login下创建了接口及它的实现类，我们可以进行修改它们。<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webservice6.JPG" width="463" height="138" /><br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webservice7.JPG" width="477" height="169" /><br />
好了，现在我们对它进行发布，发布成功后，在浏览器URL上键入：http://localhost:8080/webservice/services/Login?WSDL<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webservice8.JPG" width="745" height="532" /><br />
OK，成功了，当我们看到该XML，证明server端已经OK了<br />
<br />
下班了，明天继续。<br />
<img src ="http://www.blogjava.net/mycolby/aggbug/327496.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2010-07-29 17:35 <a href="http://www.blogjava.net/mycolby/articles/327496.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web service的JAVA开发(三)</title><link>http://www.blogjava.net/mycolby/articles/324986.html</link><dc:creator>棋剑小秋</dc:creator><author>棋剑小秋</author><pubDate>Thu, 01 Jul 2010 07:17:00 GMT</pubDate><guid>http://www.blogjava.net/mycolby/articles/324986.html</guid><wfw:comment>http://www.blogjava.net/mycolby/comments/324986.html</wfw:comment><comments>http://www.blogjava.net/mycolby/articles/324986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mycolby/comments/commentRss/324986.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mycolby/services/trackbacks/324986.html</trackback:ping><description><![CDATA[&nbsp; 第二种：用eclipse创建webservice: &nbsp;
<br />
&nbsp;&nbsp; 最近看了一下web service，算是揭开了它的面纱，才发现它原来并不神秘，相反很简单，但是它却很强大.<br />
一句话来描述它:跨语言平台，将写好的组件利用接口分布式发布出来，供其他人调用.<br />
呵呵，当然，可能说的不完全对，大家就包含了，因为仅仅只是看了一天，写了一个简单的例子.<br />
这里写一下如何发布一个简单的web service吧....<br />
Web Services引擎现在有两大主流：XFire和AXIS2<br />
这里我只介绍XFire，这两个主流我都分别写了一个简单的例子，个人觉的XFire比AXIS2更容易一点.<br />
首先，在看后面的例子讲解前，有必要去看一下web service的教程，它究竟能做什么，它的标准是什么。<br />
这里我介绍一个网址，浅显而易懂，有的解释的过于复杂，让人看的挺晕的.<br />
http://www.w3school.com.cn/webservices/ws_platform.asp<br />
下面开始讲解一个由XFire做为web service引擎的例子<br />
<strong>首先来讲解服务端的构建：</strong><br />
服务器环境是:jdk1.6+Apache tomcat5.5<br />
1.我们首先写一个接口：IBankingService<br />
&nbsp;&nbsp; public interface IBankingService {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int transferFunds(int a, int b);<br />
&nbsp;&nbsp; }<br />
2.写它的实现类：BankingService<br />
&nbsp;&nbsp; public class BankingService implements IBankingService {<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Default constructor.<br />
&nbsp;&nbsp; &nbsp; &nbsp; public BankingService() {<br />
&nbsp;&nbsp; &nbsp; &nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; &nbsp; &nbsp; public int transferFunds(int a, int b) {<br />
&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; int c = a + b;<br />
&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; return c;<br />
&nbsp;&nbsp; &nbsp;&nbsp; }<br />
}<br />
<strong style="font-weight: normal;">3.Web应用的部署描述符</strong>
<p>　　在Java中，Web应用程序通常需要至少一个部署描述符(叫做web.xml)对其进行配置。XFire本身是一个基于servlet的应用
程序。因此，我们需要增加必要的引用到描述符文件中。然后我们还必须配置将要创建的Web
Services。我们使用一个称为services.xml的新文件来完成这件事。<br />
</p>
<p>首先，修改web.xml。<br />
</p>
&nbsp;&nbsp;&nbsp; &lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"<br />
&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />
&nbsp;&nbsp;&nbsp; xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee <br />
&nbsp;&nbsp;&nbsp; http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"&gt;<br />
&nbsp;&nbsp;&nbsp; <span style="font-weight: bold;">&lt;servlet&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;XFireServlet&lt;/servlet-name&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;servlet-class&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; org.codehaus.xfire.transport.http.XFireConfigurableServlet</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/servlet-class&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &lt;/servlet&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &lt;servlet-mapping&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;XFireServlet&lt;/servlet-name&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/servlet/XFireServlet/*&lt;/url-pattern&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &lt;servlet-mapping&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;servlet-name&gt;XFireServlet&lt;/servlet-name&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;url-pattern&gt;/services/*&lt;/url-pattern&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &lt;/servlet-mapping&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &lt;welcome-file-list&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;</span><br style="font-weight: bold;" />
<span style="font-weight: bold;">&nbsp;&nbsp;&nbsp; &lt;/welcome-file-list&gt;</span><br />
&nbsp;&nbsp; &lt;/web-app&gt;<br />
4.在WebRoot\META-INF目录下新建xfire文件夹，然后在xfire目录下添加一个XFire使用的配置文件
services.xml，该配置文件中的内容反映了要将哪些java类发布为web服务。本例中的services.xml内容如下：<br />
&lt;beans xmlns="http://xfire.codehaus.org/config/1.0"&gt;&nbsp; <br />
&nbsp;&nbsp; &lt;service&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;name&gt;Banking&lt;/name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;namespace&gt;mybank&lt;/namespace&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;serviceClass&gt;com.xfire.test.IBankingService&lt;/serviceClass&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp; &lt;implementationClass&gt;com.xfire.test.BankingService&lt;/implementationClass&gt;<br />
&nbsp;&nbsp; &lt;/service&gt;&nbsp; &nbsp; <br />
&lt;/beans&gt;<br />
5.加入xfire的库文件，包含以下jar包：<br />
XFire和其它类库，需要得到所有必需的类库。我们怎样得到它们呢?去XFire网站，下载xfire-distribution-
1.0.zip，然后解压到一个本地文件夹。复制下面的jar文件和它的库文件夹到WEB-INF/lib中:
<ul>
    <li>　　activation-1.0.2.jar </li>
    <li>　　commons-codec-1.3.jar </li>
    <li>　　commons-httpclient-3.0.jar </li>
    <li>　　commons-logging-1.0.4.jar </li>
    <li>　　jaxen-1.1-beta-8.jar </li>
    <li>　　jdom-1.0.jar </li>
    <li>　　log4j-1.2.x.jar </li>
    <li>　　mail-1.3.3_01.jar </li>
    <li>　　spring-1.2.x.jar </li>
    <li>　　stax-api-1.0.jar </li>
    <li>　　wsdl4j-1.5.2.jar </li>
    <li>　　wstx-asl-2.9.jar </li>
    <li>　　xbean-2.1.0.jar </li>
    <li>　　xbean-spring-2.2.jar </li>
    <li>　　xfire-all-1.0.jar </li>
    <li>　　XmlSchema-1.0.jar </li>
</ul>
<br />
6.打war包，放到tomcat下，开启tomcat，然后访问http://localhost:8080/xfireDemo/services/Banking?wsdl<br />
xfireDemo是我项目的名称.<br />
如果页面中看到wsdl的XML文件，说明服务端发布成功了.如果抛异常了：说明services.xml文件不存在<br />
&#8220;org.springframework.beans.factory.BeanDefinitionStoreExcep<br />
解决方案：把WebRoot下整个META-INF文件夹(包含前面生成的xfire文件)拷贝到WebRoot下的classes文件夹下就OK了<br />
到这里，我相信大家都能看到在页面上看到wdsl文件内容了,可以看看内容具体是什么，如果大家了解过wdsl.<br />
<br />
<strong>现在开始构建客户端：</strong><br />
<p>
说明：本客户端使用xfire针对eclipse开发的插件(还可使用ant生成客户端，请参考其他材料)，下载和使用说明参见：<a href="http://xfire.codehaus.org/Eclipse+Plugin">http://xfire.codehaus.org/Eclipse+Plugin</a></p>
<p>1.在eclipse中新建一个名为helloClient的java object。</p>
<p>2.使用xfire插件调用服务器端的wsdl(web服务描述语言)文档生成客户端可调用的java类，</p>
<p>&nbsp;&nbsp; 打开file-&gt;new-&gt;other-&gt;Code generation from wsdl document</p>
<p>&nbsp;&nbsp; <img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/webservice9.JPG" width="435" height="317" /><br />
</p>
<p>&nbsp;3.新建一个名为Client的客户端类。其代码如下：<br />
</p>
public class Client {<br />
<br />
&nbsp;&nbsp;&nbsp; BankingClient bc;<br />
&nbsp;&nbsp;&nbsp; BankingPortType bpt;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; public Client(){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; bc=new BankingClient();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; bpt=bc.getBankingHttpPort();<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; System.out.println("result:&nbsp;&nbsp;&nbsp;&nbsp; "+bpt.transferFunds(2, 3));<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; public static void main(String[] args){<br />
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Client c = new Client();<br />
&nbsp;&nbsp;&nbsp; }<br />
}<br />
4.如果这个时候运行，你可能会遇见以下报错信息：<br />
Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/commons/httpclient/methods/RequestEntity<br />
这是由于缺少apache的commons
httpclient库文件.添加进去再试，又报错<br />
Exception in thread "main" java.lang.NoClassDefFoundError:
org/apache/commons/codec/DecoderException<br />
这是由于缺少apache的commons
codec库文件，添加进去再试，成功显示：result:&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
下面是服务端和客户端结构截图：<br />
<img alt="" src="http://www.blogjava.net/images/blogjava_net/mycolby/12.JPG" width="310" height="544" /><br />
好了，我这人挺懒的，都不喜欢写些笔记，今天真是难得写一次呀。<br />
<p style="color: #ff0000;"><wbr><br />
</p>
<img src ="http://www.blogjava.net/mycolby/aggbug/324986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mycolby/" target="_blank">棋剑小秋</a> 2010-07-01 15:17 <a href="http://www.blogjava.net/mycolby/articles/324986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>