簡単なHessianインタフェースの開発例

2680 ワード

必要なjarパッケージjar‍‍
#クライアント
  • インタフェース
  • package com.test;
    
    public interface Printer {
    	
    	public String print(String a);
    	
    	public String say();
    
    }

    2.インタフェースの実装
    package com.test;
    
    public class PrinterService implements Printer {
    
    	public String print(String a) {
    		return a;
    	}
    
    	public String say() {
    		return "nihao";
    	}
    
    }

    3.web.xmlの構成
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:javaee="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
      <servlet>
        <servlet-name>aaa</servlet-name>
        <servlet-class>com.caucho.hessian.server.HessianServlet</servlet-class>
        <init-param>
          <javaee:param-name>service-class</javaee:param-name>
          <javaee:param-value>com.test.PrinterService</javaee:param-value>
        </init-param>
      </servlet>
      <servlet-mapping>
        <servlet-name>aaa</servlet-name>
        <url-pattern>/aaa</url-pattern>
      </servlet-mapping>
    </web-app>

    #サービス端
     1.テストクラス
    package com.test;
    
    import java.net.MalformedURLException;
    
    import com.caucho.hessian.client.HessianProxyFactory;
    
    public class TestHessian {
    
    	/**
    	 * @param args
    	 * @throws MalformedURLException 
    	 */
    	public static void main(String[] args) throws MalformedURLException {
    		// TODO Auto-generated method stub
    		String url = "http://localhost:7001/H/aaa";
    		// factory 
    		HessianProxyFactory factory = new HessianProxyFactory();
    		// Basic 
    		// java Printer , 
    		Printer printr = (Printer)factory.create(Printer.class, url);
    		System.out.println("Hessian: " + printr.print("123")+printr.say()); 
    	} 
    
    }

    出力結果:
    Hessian: 123nihao

    Hessianインタフェースについて:
    Hessianはbinary-RPCに基づいて実現された遠隔通信libraryである.バイナリを使用してデータを転送します.Hessianは通常、インタフェースを介して露出するWebアプリケーションによってサービスを提供する.サーブレットとSpringのDispatcherServiceは、Hessianサービスにリクエストを転送できます.
    hessianに関する7つの質問:
    1、どのようなプロトコルに基づいて実現されたのですか.
    Binary-RPCプロトコルに基づいて実装される.
    2、どのようにお願いしますか.
    Hessian自身が提供するAPIを通じてリクエストを開始する必要があります.
    3、どのように要求を合意に合致するフォーマットに変換しますか?
    Hessianは,そのカスタムシリアル化機構により要求情報をシーケンス化し,バイナリストリームを生成する.
    4、どんな伝送プロトコルを使って伝送しますか.
    HessianはHttpプロトコルに基づいて伝送する.
    5、応答側はどのようなメカニズムに基づいて要求を受信しますか?
    応答側は、Hessianが提供するAPIに従って要求を受信する.
    6、どのようにしてストリームを転送形式に復元しますか?
    Hessianはそのプライベートなシリアル化メカニズムに基づいて要求情報を逆シーケンス化し,利用者に伝達する際にすでに対応する要求情報オブジェクトである.
    7、処理が終わったらどう答えますか.
    処理が完了すると直接戻り、hessianは結果オブジェクトをシーケンス化して呼び出し側に転送します.