<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://m.tkk7.com/sxyx2008/謝謝合作!!!

    雪山飛鵠

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://m.tkk7.com/sxyx2008/謝謝合作!!!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks
            baidu百科這樣介紹它:
            Hessian是一個輕量級的remoting on http工具,使用簡單的方法提供了RMI的功能. 相比WebService,Hessian更簡單、快捷。采用的是二進制RPC協議,因為采用的是二進制協議,所以它很適合于發送二進制數據.
            開元百科這樣介紹它:
            Hessian是Caucho開發的一種二進制Web Service協議。采取Apache許可協議. 
            The Hessian binary web service protocol makes web services usable without requiring a large framework, and without learning yet another alphabet soup of protocols. Because it is a binary protocol, it is well-suited to sending binary data without any need to extend the protocol with attachments.
    Hessian是一個精心打造的Web Service實現,它支持Java、C#、Ruby、PHP和Python,又新增了ActionScript。使用Adobe Flash和Flex的RIA開發者們在需要集成業務服務的時候,Hessian應該是一個不錯的選擇。
            既然都它這么神奇,那么我們就又要去認識下這位新朋友。
            項目主頁:http://hessian.caucho.com/
            建議大家仔細認真閱讀下官方網站。
            還是先從helloworld著手。
            它只需要一個jar包即可
            去官方下載適用于java環境下的jar包支持
            hessian-4.0.7.jar   hessian-4.0.7-src.jar
            創建web工程。
            編寫接口:
    package com.hessian.demo.inf;

    public interface HelloWorld {
        
        
    public String sayHelloWorld(String name);
        
    }
            編寫實現類:
    package com.hessian.demo.impl;

    import com.hessian.demo.inf.HelloWorld;

    public class HelloWorldImpl implements HelloWorld {

        
    public String sayHelloWorld(String name) {
            
    return "Hello ,"+name+"Welcome to use hessian ! ";
        }

    }
            配置web.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="2.5" 
        xmlns
    ="http://java.sun.com/xml/ns/javaee" 
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation
    ="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    >
        
    <servlet>
            
    <servlet-name>helloworld</servlet-name>
            
    <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
            
    <init-param>
                
    <!-- 此處hom-api為固定寫法,為HessianServlet中定義的參數詳細可參考HessianServlet -->
                
    <!-- 其值為接口的類長名即 包名+類名 -->
                
    <param-name>home-api</param-name>
                
    <param-value>com.hessian.demo.inf.HelloWorld</param-value>
            
    </init-param>
            
    <init-param>
                
    <!-- 此處hom-class為固定寫法,為HessianServlet中定義的參數詳細可參考HessianServlet -->
                
    <!-- 其值為實現類的類長名即 包名+類名 -->
                
    <param-name>home-class</param-name>
                
    <param-value>com.hessian.demo.impl.HelloWorldImpl</param-value>
            
    </init-param>
        
    </servlet>
        
    <servlet-mapping>
            
    <servlet-name>helloworld</servlet-name>
            
    <url-pattern>/helloworld</url-pattern>
        
    </servlet-mapping>
    </web-app>
            此處web.xml中配置的初始化參數具體可參考HessianServlet的init()方法
    public void init(ServletConfig config)
        
    throws ServletException
      {
        
    super.init(config);
        
        
    try {
          
    if (_homeImpl != null) {
          }
          
    else if (getInitParameter("home-class"!= null) {
        String className 
    = getInitParameter("home-class");
        
        Class homeClass 
    = loadClass(className);

        _homeImpl 
    = homeClass.newInstance();
        
        init(_homeImpl);
          }
          
    else if (getInitParameter("service-class"!= null) {
        String className 
    = getInitParameter("service-class");
        
        Class homeClass 
    = loadClass(className);

        _homeImpl 
    = homeClass.newInstance();
        
        init(_homeImpl);
          }
          
    else {
        
    if (getClass().equals(HessianServlet.class))
          
    throw new ServletException("server must extend HessianServlet");

        _homeImpl 
    = this;
          }

          
    if (_homeAPI != null) {
          }
          
    else if (getInitParameter("home-api"!= null) {
        String className 
    = getInitParameter("home-api");
        
        _homeAPI 
    = loadClass(className);
          }
          
    else if (getInitParameter("api-class"!= null) {
        String className 
    = getInitParameter("api-class");

        _homeAPI 
    = loadClass(className);
          }
          
    else if (_homeImpl != null) {
        _homeAPI 
    = findRemoteAPI(_homeImpl.getClass());

        
    if (_homeAPI == null)
          _homeAPI 
    = _homeImpl.getClass();
          }
          
          
    if (_objectImpl != null) {
          }
          
    else if (getInitParameter("object-class"!= null) {
        String className 
    = getInitParameter("object-class");
        
        Class objectClass 
    = loadClass(className);

        _objectImpl 
    = objectClass.newInstance();

        init(_objectImpl);
          }

          
    if (_objectAPI != null) {
          }
          
    else if (getInitParameter("object-api"!= null) {
        String className 
    = getInitParameter("object-api");
        
        _objectAPI 
    = loadClass(className);
          }
          
    else if (_objectImpl != null)
        _objectAPI 
    = _objectImpl.getClass();

          _homeSkeleton 
    = new HessianSkeleton(_homeImpl, _homeAPI);
          
    if (_objectAPI != null)
        _homeSkeleton.setObjectClass(_objectAPI);

          
    if (_objectImpl != null) {
        _objectSkeleton 
    = new HessianSkeleton(_objectImpl, _objectAPI);
        _objectSkeleton.setHomeClass(_homeAPI);
          }
          
    else
        _objectSkeleton 
    = _homeSkeleton;

          
    if ("true".equals(getInitParameter("debug")))
        _isDebug 
    = true;

          
    if ("false".equals(getInitParameter("send-collection-type")))
        setSendCollectionType(
    false);
        } 
    catch (ServletException e) {
          
    throw e;
        } 
    catch (Exception e) {
          
    throw new ServletException(e);
        }
      }
             編寫客戶端測試代碼:
    package com.hessian.demo.client;

    import com.caucho.hessian.client.HessianProxyFactory;
    import com.hessian.demo.inf.HelloWorld;

    public class HelloWorldClient {
        
        
    public static void main(String[] args) throws Exception{
            
    //servlet的訪問路徑
            String url="http://localhost:8080/hessian/helloworld";
            
    //創建一HessianProxyFactory對象,用法與xfire很像
            HessianProxyFactory proxyFactory=new HessianProxyFactory();
            
    //獲得HelloWorld的實例,傳遞兩個參數依次為:接口.class,該servlet的訪問路徑
            HelloWorld helloWorld=(HelloWorld) proxyFactory.create(HelloWorld.class, url);
            System.out.println(helloWorld.sayHelloWorld(
    "張三"));
        }
    }
            效果圖:


    posted on 2010-09-01 09:24 雪山飛鵠 閱讀(2672) 評論(2)  編輯  收藏 所屬分類: webservice

    Feedback

    # re: Hessian一個輕量級的remoting on http工具[未登錄] 2010-09-01 09:29 匿名
    不錯,歡迎咱們一塊來研究它的源碼。  回復  更多評論
      

    # re: Hessian一個輕量級的remoting on http工具 2010-10-03 15:01 淡茗
    @匿名
    貌似缺失了很多源碼,如com.caucho.hessian.client.HessianProxyFactory 這個類  回復  更多評論
      

    主站蜘蛛池模板: 亚洲伊人久久大香线蕉综合图片 | 亚洲黄色激情视频| 日本免费A级毛一片| 国产亚洲精品无码专区| 尤物视频在线免费观看| 在线a亚洲v天堂网2019无码| 久久99精品免费一区二区| 99视频有精品视频免费观看| 亚洲婷婷五月综合狠狠爱| a毛片在线免费观看| 看全色黄大色大片免费久久| 亚洲国产精品VA在线观看麻豆| 亚洲中字慕日产2021| 亚洲国产免费综合| 国产亚洲一区二区在线观看| 国产一精品一AV一免费| 亚洲欧洲精品一区二区三区| 直接进入免费看黄的网站| 99热在线观看免费| 亚洲人成影院在线高清| a级毛片免费全部播放| 久久亚洲精品成人| 两个人看的www免费高清| 久热综合在线亚洲精品| 亚洲精品偷拍视频免费观看| 国产aⅴ无码专区亚洲av| 成人午夜免费福利视频| 黑人粗长大战亚洲女2021国产精品成人免费视频| 97精品免费视频| 亚洲熟妇无码AV不卡在线播放| 四虎免费久久影院| 亚洲国产成人久久综合| 国产精品视频免费观看| 国产亚洲精品AAAA片APP| 国产成A人亚洲精V品无码| 91网站免费观看| 免费国产污网站在线观看不要卡 | 日韩在线免费播放| 亚洲中文字幕无码中文字| 久久精品国产亚洲Aⅴ香蕉| 91av免费观看|