爪哇哇

          一個軟件分析師的博客

          XFIRE的一個例子,發(fā)現(xiàn)左web service真是簡單得要命!! 側(cè)面印證了寫代碼越來越?jīng)]前途了,哈

          接口 interface
          import J2EE技術(shù)的爬蟲.util.Collection;
          import J2EE技術(shù)的爬蟲.util.List;

          public interface IMathService {
           /**
            * 加
            * @param a
            * @param b
            * @return
            */
           public int add(int a,int b);
           /**
            * 減
            * @param a
            * @param b
            * @return
            */
           public int sub(int a,int b);
          /**
          上傳二進制文件
          */
            public String sendFile(String fileName,byte[] file );
           
          }

          實現(xiàn) implements

          import J2EE技術(shù)的爬蟲.io.File;
          import J2EE技術(shù)的爬蟲.io.FileOutputStream;
          import J2EE技術(shù)的爬蟲.sql.Connection;
          import J2EE技術(shù)的爬蟲.sql.ResultSet;
          import J2EE技術(shù)的爬蟲.sql.Statement;
          import J2EE技術(shù)的爬蟲.util.ArrayList;
          import J2EE技術(shù)的爬蟲.util.Collection;
          import J2EE技術(shù)的爬蟲.util.List;

          import com.newsoft.oa.bean.User;
          import com.newsoft.oa.uitl.Connector;
          import com.thoughtworks.xstream.XStream;

          public class MathServiceImpl implements IMathService{
            public int add(int a,int b){
             return a+b;
            }
           
            public int sub(int a,int b){
             return a-b;
            }
            public String getWelComeStr(String name){
             return "hi "+name+"! 歡迎你";
            }
            public List getUsers(){
             List l=new ArrayList();
             l.add("name");
             l.add("password");
             l.add("sex");
             return l;
            }

          public String sendFile(String fileName, byte[] filebytes) {
           try{
            String path="";
             if(filebytes!=null&&filebytes.length>0){
              File file=new File("/"+fileName);
             
              file.createNewFile();
              FileOutputStream fos=new FileOutputStream(file);
              fos.write(filebytes);
              fos.close();
              path=file.getAbsolutePath();
              System.out.println(path);
             
              file=null;
             
             }
            
             return path;
           }catch(Exception ex){
            return "false";
           }
          }

          }

          配置文件

          放在 Classes/META-INF/xfire/service.xml;里面

          <?xml version="1.0" encoding="UTF-8"?>
          <beans xmlns="http://xfire.codehaus.org/config/1.0">
           <service>
            <name>MathService</name>
            <namespace>newsoft/oa/MathService</namespace>
            <serviceClass>
             com.newsoft.oa.services.IMathService
            </serviceClass>
            <implementationClass>
             com.newsoft.oa.services.MathServiceImpl
            </implementationClass>

           </service>
          </beans>

          其實是借鑒了Spring的寫法,用過Spring不會對著陌生,(Application-context.xml)

          WEB-XML加上

          <servlet>
            <servlet-name>XFireServlet</servlet-name>
            <servlet-class>
             org.codehaus.xfire.transport.http.XFireConfigurableServlet
            </servlet-class>
           </servlet>

           <servlet-mapping>
            <servlet-name>XFireServlet</servlet-name>
            <url-pattern>/servlet/XFireServlet/*</url-pattern>
           </servlet-mapping>

           <servlet-mapping>
            <servlet-name>XFireServlet</servlet-name>
            <url-pattern>/services/*</url-pattern>
           </servlet-mapping>


          最后就是客戶端了

          / /Create a metadata of the service             
           Service serviceModel = new ObjectServiceFactory().create(IMathService.class);
          // Create a proxy for the deployed service     
           
           XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());  
           String serviceUrl = "http://localhost:8080/ws/services/MathService";
            client = null;      
           try {         
             client = (IMathService) factory.create(serviceModel, serviceUrl); 
             File file=new File("c:\\SUPERMAP 白皮書.pdf");
             FileInputStream fis=new FileInputStream(file);
             byte[] b=new byte[fis.available()];
             fis.read(b);
            System.out.println(client.sendFile(file.getName(), b));
           } catch (Exception ex) {        
             ex.printStackTrace();
           }                           //Invoke the service   
           int serviceResponse = 0;
           int a=10,b=20;

          就是

          Service serviceModel = new ObjectServiceFactory().create(IMathService.class); 
           XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());  
           String serviceUrl = http://localhost:8080/ws/services/MathService;

          三行字建立連接請求,

          太輕松了

          傳輸文件速度也可以,二進制,2M多的文件,也能輕松傳遞

          用.net和delphi平臺測試,兼容性沒問題(按道理 soap,也不應(yīng)該有問題)

          這是為客戶搭建的在 檔案系統(tǒng)和OA審批間作文件歸檔的嘗試項目

          哈,完整的項目代碼,就不方便講了。

          posted on 2007-12-29 14:59 李立波 閱讀(2509) 評論(2)  編輯  收藏 所屬分類: JAVA

          Feedback

          # re: XFIRE的一個例子,發(fā)現(xiàn)左web service真是簡單得要命!! 側(cè)面印證了寫代碼越來越?jīng)]前途了,哈 2008-09-27 15:23 楊培海

          請教個問題:您的客戶端和服務(wù)端都在同一個工程下面,要是客戶端和服務(wù)端不在同一個工程下,您要怎樣轉(zhuǎn)換為IMathService類型的接口呢?我的郵箱是472579211@qq.com  回復(fù)  更多評論   

          # re: XFIRE的一個例子,發(fā)現(xiàn)左web service真是簡單得要命!! 側(cè)面印證了寫代碼越來越?jīng)]前途了,哈[未登錄] 2010-01-18 08:41 BS

          你都傻的,客戶端的不能這樣做的,你的客戶端要在別的機器上測試才得
          這樣寫大把都有啦  回復(fù)  更多評論   



          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          My Links

          Blog Stats

          News

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          文章檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 都安| 泰兴市| 上思县| 黄浦区| 五大连池市| 屏山县| 巴青县| 公安县| 宣威市| 万载县| 华安县| 岳阳县| 白河县| 灵武市| 府谷县| 盐山县| 泽州县| 富阳市| 彩票| 永德县| 平原县| 卫辉市| 南陵县| 吴忠市| 大埔县| 乌拉特后旗| 凌海市| 湖北省| 兖州市| 芜湖市| 延庆县| 南召县| 西贡区| 满洲里市| 米泉市| 体育| 虹口区| 崇明县| 柘城县| 五指山市| 德江县|