爪哇哇

          一個軟件分析師的博客

          XFIRE的一個例子,發現左web service真是簡單得要命!! 側面印證了寫代碼越來越沒前途了,哈

          接口 interface
          import J2EE技術的爬蟲.util.Collection;
          import J2EE技術的爬蟲.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 );
           
          }

          實現 implements

          import J2EE技術的爬蟲.io.File;
          import J2EE技術的爬蟲.io.FileOutputStream;
          import J2EE技術的爬蟲.sql.Connection;
          import J2EE技術的爬蟲.sql.ResultSet;
          import J2EE技術的爬蟲.sql.Statement;
          import J2EE技術的爬蟲.util.ArrayList;
          import J2EE技術的爬蟲.util.Collection;
          import J2EE技術的爬蟲.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,也不應該有問題)

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

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

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

          Feedback

          # re: XFIRE的一個例子,發現左web service真是簡單得要命!! 側面印證了寫代碼越來越沒前途了,哈 2008-09-27 15:23 楊培海

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

          # re: XFIRE的一個例子,發現左web service真是簡單得要命!! 側面印證了寫代碼越來越沒前途了,哈[未登錄] 2010-01-18 08:41 BS

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



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


          網站導航:
           

          My Links

          Blog Stats

          News

          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          文章檔案

          相冊

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 内江市| 石台县| 贞丰县| 秦皇岛市| 通渭县| 大田县| 广安市| 瓦房店市| 崇文区| 张家川| 沙坪坝区| 新民市| 贵溪市| 松溪县| 景德镇市| 沾化县| 岳池县| 沈丘县| 多伦县| 莫力| 靖边县| 洛川县| 江孜县| 商丘市| 肥西县| 专栏| 玛纳斯县| 新河县| 尉氏县| 文化| 长沙市| 辽宁省| 南郑县| 南皮县| 邹城市| 九龙县| 永仁县| 五常市| 资源县| 弥勒县| 和政县|