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

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

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

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

    雪山飛鵠

    溫馨提示:您的每一次轉載,體現了我寫此文的意義!!!煩請您在轉載時注明出處http://www.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 雪山飛鵠 閱讀(2674) 評論(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 這個類  回復  更多評論
      

    主站蜘蛛池模板: 亚洲色大成网站www尤物| 亚洲午夜久久久精品电影院| 免费精品国产自产拍观看| 国产99视频精品免费视频7| 亚洲国产视频久久| 一个人看的www免费在线视频| a视频在线观看免费| 91精品免费观看| 国产一级高清免费观看| MM1313亚洲国产精品| 国产猛男猛女超爽免费视频| 毛片免费视频在线观看| 免费能直接在线观看黄的视频 | 亚洲欧美在线x视频| 国产裸模视频免费区无码| 人人狠狠综合久久亚洲婷婷| 亚洲ts人妖网站| 免费无码av片在线观看| 又黄又爽一线毛片免费观看| 亚洲一区二区三区免费视频| 最近中文字幕无吗高清免费视频| 亚洲欧美不卡高清在线| a拍拍男女免费看全片| 久久精品国产亚洲AV久| 日本高清免费aaaaa大片视频| 亚洲丝袜美腿视频| 一级毛片a免费播放王色| 亚洲乱码中文字幕久久孕妇黑人| 亚洲成AV人片在线观看ww| 99久久免费精品视频| 亚洲VA中文字幕无码毛片| 国产美女视频免费观看的网站| 好爽…又高潮了毛片免费看| 亚洲激情黄色小说| a级毛片黄免费a级毛片| 亚洲国产精品午夜电影| **一级一级毛片免费观看| 久久久久无码精品亚洲日韩| 中文字幕无码毛片免费看| 亚洲免费二区三区| 久久亚洲中文字幕精品一区|