﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-爪哇哇-随笔分类-JAVA</title><link>http://www.blogjava.net/nikon/category/28514.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 29 Dec 2007 19:05:10 GMT</lastBuildDate><pubDate>Sat, 29 Dec 2007 19:05:10 GMT</pubDate><ttl>60</ttl><item><title>XFIRE的一个例子，发现左web service真是简单得要命！！ 侧面印证了写代码越来越没前途了，哈</title><link>http://www.blogjava.net/nikon/archive/2007/12/29/171540.html</link><dc:creator>李立波</dc:creator><author>李立波</author><pubDate>Sat, 29 Dec 2007 06:59:00 GMT</pubDate><guid>http://www.blogjava.net/nikon/archive/2007/12/29/171540.html</guid><wfw:comment>http://www.blogjava.net/nikon/comments/171540.html</wfw:comment><comments>http://www.blogjava.net/nikon/archive/2007/12/29/171540.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nikon/comments/commentRss/171540.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nikon/services/trackbacks/171540.html</trackback:ping><description><![CDATA[<p>接口 interface<br />
import <a title="" href="www.csdn.org" >J2EE技术的爬虫</a>.util.Collection;<br />
import <a title="" href="www.csdn.org" >J2EE技术的爬虫</a>.util.List;</p>
<p>public interface IMathService {<br />
&nbsp;/**<br />
&nbsp; * 加<br />
&nbsp; * @param a<br />
&nbsp; * @param b<br />
&nbsp; * @return<br />
&nbsp; */<br />
&nbsp;public int add(int a,int b);<br />
&nbsp;/**<br />
&nbsp; * 减<br />
&nbsp; * @param a<br />
&nbsp; * @param b<br />
&nbsp; * @return<br />
&nbsp; */<br />
&nbsp;public int sub(int a,int b);<br />
/**<br />
上传二进制文件<br />
*/<br />
&nbsp;&nbsp;public String sendFile(String fileName,byte[] file );<br />
&nbsp;<br />
}<br />
<br />
实现 implements<br />
<br />
</p>
<p>import <a title="" href="www.csdn.org" >J2EE技术的爬虫</a>.io.File;<br />
import <a title="" href="www.csdn.org" >J2EE技术的爬虫</a>.io.FileOutputStream;<br />
import <a title="" href="www.csdn.org" >J2EE技术的爬虫</a>.sql.Connection;<br />
import <a title="" href="www.csdn.org" >J2EE技术的爬虫</a>.sql.ResultSet;<br />
import <a title="" href="www.csdn.org" >J2EE技术的爬虫</a>.sql.Statement;<br />
import <a title="" href="www.csdn.org" >J2EE技术的爬虫</a>.util.ArrayList;<br />
import <a title="" href="www.csdn.org" >J2EE技术的爬虫</a>.util.Collection;<br />
import <a title="" href="www.csdn.org" >J2EE技术的爬虫</a>.util.List;</p>
<p>import com.newsoft.oa.bean.User;<br />
import com.newsoft.oa.uitl.Connector;<br />
import com.thoughtworks.xstream.XStream;</p>
<p>public class MathServiceImpl implements IMathService{<br />
&nbsp; public int add(int a,int b){<br />
&nbsp;&nbsp; return a+b;<br />
&nbsp; }<br />
&nbsp; <br />
&nbsp; public int sub(int a,int b){<br />
&nbsp;&nbsp; return a-b;<br />
&nbsp; } <br />
&nbsp; public String getWelComeStr(String name){<br />
&nbsp;&nbsp; return "hi "+name+"! 欢迎你";<br />
&nbsp; }<br />
&nbsp; public List getUsers(){<br />
&nbsp;&nbsp; List l=new ArrayList();<br />
&nbsp;&nbsp; l.add("name");<br />
&nbsp;&nbsp; l.add("password");<br />
&nbsp;&nbsp; l.add("sex");<br />
&nbsp;&nbsp; return l;<br />
&nbsp; }</p>
<p>public String sendFile(String fileName, byte[] filebytes) {<br />
&nbsp;try{<br />
&nbsp;&nbsp;String path="";<br />
&nbsp;&nbsp; if(filebytes!=null&amp;&amp;filebytes.length&gt;0){<br />
&nbsp;&nbsp;&nbsp; File file=new File("/"+fileName);<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; file.createNewFile();<br />
&nbsp;&nbsp;&nbsp; FileOutputStream fos=new&nbsp;FileOutputStream(file);<br />
&nbsp;&nbsp;&nbsp; fos.write(filebytes);<br />
&nbsp;&nbsp;&nbsp; fos.close();<br />
&nbsp;&nbsp;&nbsp; path=file.getAbsolutePath();<br />
&nbsp;&nbsp;&nbsp; System.out.println(path);<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; file=null;<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; <br />
&nbsp;&nbsp; return path;<br />
&nbsp;}catch(Exception ex){<br />
&nbsp;&nbsp;return "false";<br />
&nbsp;}<br />
}<br />
</p>
<p>}<br />
<br />
配置文件 <br />
<br />
放在 Classes/META-INF/xfire/service.xml；里面<br />
<br />
</p>
<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;beans xmlns="http://xfire.codehaus.org/config/1.0"&gt;<br />
&nbsp;&lt;service&gt;<br />
&nbsp;&nbsp;&lt;name&gt;MathService&lt;/name&gt;<br />
&nbsp;&nbsp;&lt;namespace&gt;newsoft/oa/MathService&lt;/namespace&gt;<br />
&nbsp;&nbsp;&lt;serviceClass&gt;<br />
&nbsp;&nbsp;&nbsp;com.newsoft.oa.services.IMathService<br />
&nbsp;&nbsp;&lt;/serviceClass&gt;<br />
&nbsp;&nbsp;&lt;implementationClass&gt;<br />
&nbsp;&nbsp;&nbsp;com.newsoft.oa.services.MathServiceImpl<br />
&nbsp;&nbsp;&lt;/implementationClass&gt;</p>
<p>&nbsp;&lt;/service&gt;<br />
&lt;/beans&gt;</p>
<p>其实是借鉴了Spring的写法，用过Spring不会对着陌生，（Application-context.xml）<br />
<br />
WEB-XML加上<br />
<br />
</p>
<p>&lt;servlet&gt;<br />
&nbsp;&nbsp;&lt;servlet-name&gt;XFireServlet&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&lt;servlet-class&gt;<br />
&nbsp;&nbsp;&nbsp;org.codehaus.xfire.transport.http.XFireConfigurableServlet<br />
&nbsp;&nbsp;&lt;/servlet-class&gt;<br />
&nbsp;&lt;/servlet&gt;</p>
<p>&nbsp;&lt;servlet-mapping&gt;<br />
&nbsp;&nbsp;&lt;servlet-name&gt;XFireServlet&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&lt;url-pattern&gt;/servlet/XFireServlet/*&lt;/url-pattern&gt;<br />
&nbsp;&lt;/servlet-mapping&gt;</p>
<p>&nbsp;&lt;servlet-mapping&gt;<br />
&nbsp;&nbsp;&lt;servlet-name&gt;XFireServlet&lt;/servlet-name&gt;<br />
&nbsp;&nbsp;&lt;url-pattern&gt;/services/*&lt;/url-pattern&gt;<br />
&nbsp;&lt;/servlet-mapping&gt;</p>
<br />
最后就是客户端了 <br />
<br />
/&nbsp;/Create a metadata of the service&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;Service serviceModel = new ObjectServiceFactory().create(IMathService.class); <br />
//&nbsp;Create a proxy for the deployed service&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp; <br />
&nbsp;XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());&nbsp;&nbsp; <br />
&nbsp;String serviceUrl = "http://localhost:8080/ws/services/MathService";<br />
&nbsp; client = null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;try {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; client = (IMathService) factory.create(serviceModel, serviceUrl);&nbsp; <br />
&nbsp;&nbsp; File file=new File("c:\\SUPERMAP 白皮书.pdf");<br />
&nbsp;&nbsp; FileInputStream fis=new FileInputStream(file);<br />
&nbsp;&nbsp; byte[] b=new byte[fis.available()];<br />
&nbsp;&nbsp; fis.read(b);<br />
&nbsp;&nbsp;System.out.println(client.sendFile(file.getName(), b));<br />
&nbsp;} catch (Exception ex) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp; ex.printStackTrace();<br />
&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Invoke the service&nbsp;&nbsp;&nbsp; <br />
&nbsp;int serviceResponse = 0;<br />
&nbsp;int a=10,b=20;<br />
<br />
就是 <br />
<br />
<span style="color: red">Service serviceModel = new ObjectServiceFactory().create(IMathService.class);&nbsp;<br />
&nbsp;XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());&nbsp;&nbsp; <br />
&nbsp;String serviceUrl = <a href="http://localhost:8080/ws/services/MathService">http://localhost:8080/ws/services/MathService</a>;<br />
</span><br />
三行字建立连接请求，<br />
<br />
太轻松了<br />
<br />
传输文件速度也可以，二进制，2M多的文件，也能轻松传递<br />
<br />
用.net和delphi平台测试，兼容性没问题（按道理 soap,也不应该有问题）<br />
<br />
这是为客户搭建的在 档案系统和OA审批间作文件归档的尝试项目<br />
<br />
哈，完整的项目代码，就不方便讲了。<br /><img src ="http://www.blogjava.net/nikon/aggbug/171540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nikon/" target="_blank">李立波</a> 2007-12-29 14:59 <a href="http://www.blogjava.net/nikon/archive/2007/12/29/171540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>