分散オブジェクト環境を学ぶ
連載:HORBと遊ぼう(4)

HORBでサーバアプリケーションを作ろう

萩本順三
HORB Openマネージャ
株式会社豆蔵
2001/2/18

 はじめに

 1月末に、HORB BOFセミナー「SOAPって?」が開催され、マイクロソフト(株)の萩原さん、野村さん、熊谷さんにSOAPおよび.NETについて講演をしていただきました。私もUMLを使ったHORBアーキテクチャというタイトルで話しました。2月16日には、平野博士とデジタルハリウッドの安田さんによるHORB勉強会が開催されます。そして、3月2日はHORBの年に1度の大イベント「HORBシンポジウム2001」が開催されます。皆さん、このページでしっかりと楽しんだ後は、シンポジウムに参加してHORBの凄さを実感してください。申込みはこちらです。

 今回は、接続モデルについて説明していきます。いままでおもちゃ感覚でHORBを使ってきましたが、本号から徐々にHORBのプロ向けの機能について説明していきたいと思います。おっと、でもタイトルどおり遊び感覚は忘れてはいませんよ、できるだけ図を入れた解説で進めますので、じっくりとお付き合いください。

 今回のソースはここ(examples4.zip)からダウンロードしてください。

 (1)生成モデルって何だ?

 第2回の「HORBによるリモートオブジェクトのインスタンス管理」で紹介したソースリスト1とリスト2、およびその実行イメージ図1を思い出してください。いままで解説してきたHORBのサンプルソースは、horbcコンパイラによって生成された代理オブジェクト(Proxyクラス)のインスタンスを生成(new)すると、サーバ側に自動的にリモートクラスのインスタンスが生成(new)されるものでしたね。HORBのユーザーは、代理オブジェクトをサーバ側の本物のオブジェクト(リモートオブジェクト)のつもりで使えばいいのです。この手順は第2回の「連続写真(メッセージをやりとりするまで)」で解説しましたので、もうお分かりですよね。

図1 生成モデル

001:public class Test2{
002:    private String name;
003:    public void setName(String name){
004:    this.name = name;
005:  }
006:  public void print(){
007:    System.out.println("私の名前は "+name+ "です。");
008:  }
009:}
リスト1 Test2.java

001:public class RemoteInstanceTest{
002:  public static void main( String argv[] ){
003:    String host = (argv.length == 1) ? argv[0] : "localhost";
004:    Test2_Proxy test1 = new Test2_Proxy("horb://"+host);
005:    Test2_Proxy test2 = new Test2_Proxy("horb://"+host);
006:    test1.setName("Test1");
007:    test2.setName("Test2");
008:    test1.print();
009:    test2.print();
010:  }
011:}
リスト2 RemoteInstanceTest.java

 このプログラミングインターフェイスの特徴的な点は、ネットワークを隔てたところにあるオブジェクトをリモート操作によって生成できることです。この機能は、通常のJavaのクラスをnew演算子によりメモリ中に生成するという手続きにできるだけ似せているのです。これによってJava言語とのシームレス性が高まり、「HORBはなんて簡単なんだ!」と利用者が驚くことを期待しているわけです。このようにリモートクラスをダイナミックに生成することをHORBでは、「生成モデル」と呼びます。

 これはオリジナル開発者の平野さんの斬新的な発明といえるものです。まさにコロンブスの卵ですね。シンプルな形で利用者が望むものを提供しているのです。私もこの斬新さに思いっきりHORBのファンになってしまいました。

  (2)接続モデルって何だ?


Index

第4回 HORBでサーバアプリケーションを作ろう

(1) 生成モデルって何だ?
  (2) 接続モデルって何だ?
 HORBサーバの起動

 Clientの起動
 実行結果
 代理オブジェクトの引数
  (3)サーバアプリケーションを作る
 コンパイル
 Serverの起動
 Clientの起動
 実行結果
 

 

連載記事一覧



Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間