Oni ORB KCh

hLg̖ڎ

1. ORBƂ

ORBObject Request Broker̗ŁAlbg[NăIuWFNg̃\bhĂяo ([gĂяojsAIuWFNg̎QƂRs[n肷邱Ƃ @\łB ORBgƂɂĂxlbg[N ӎȂŃvO~O邱ƂłBʓIORBƂẮAT|[gCORBAA JAVAWRMIB

ORBp[g\bhR[
} ORBp[g\bhR[

2. Oni ORB̓

Oni ORBOnizlbg[N̏ɍ\zꂽORBŁAȉ̂悤ȓB

Oni ORBgƂɂāAzXgɂIuWFNg̃\bhlbg[NČĂ [g\bhR[sƂłB zXg̃IuWFNgւ̎QƂƂȂProxyIuWFNgIɐ̂ŁA ORBɂ悤ȃRpCKvƂAgp@͔ɊȒPłB ORB̓(IuWFNg̎QƓnAlnAoneway, compress)̓C^tF[X Lq@ɂĐ䂷dlɂȂĂB

܂AOnizlbg[NgpĂ邽߁A낢ȃlbg[NŎgp邱Ƃ ”\ƂȂĂB

3. ȒPȎgp@

ȒPȃR[hgOni ORB̎gp@ȉ̗ŏЉB

(1) C^tF[X̒`

Oni ORBŃ[g\bhR[s߂ɂ́A܂Ăяo C^tF[X`邱Ƃn܂B
ł́Aȉ̂悤HelloWorldC^tF[X`Ă݂B ORBĂяoC^tF[X public łKvB

public interface HelloWorld {
    public String greeting(String name);
}

(2) ORBւ̓o^

ȉAHelloWorldC^tF[XƒIuWFNgORBɃoChio^jR[hłB ORBɃIuWFNgo^ɂ́AORB#bind()\bhgpB ORBɓo^邱ƂɂāÃzXg̃ANZX”\ɂȂB ȂAoCh̍ۂ oChw肷KvB [go^IuWFNgɃANZXۂ́A ̃oChgăIuWFNg肷B

import oni.orb.*;
import oni.net.*;

// HelloWorldC^tF[X̎
class HelloWorldImpl implements HelloWorld {
    public String greeting(String name) {
        String returnString = "Hello " + name + "!!  welcome to Oni ORB!";
        System.out.println("greeting from " + name);
        return name;
    }
}

// ORBグT[o
public class Server {
    public static void main(String[] args) {
        try {
            // ORB̏  (12345ԃ|[gLaneManagerカ
            LaneManager laneManager = new LaneManager(12345);
            ORB orb = new ORB(laneManager);

            // ORB"Hello"ニ0ナ、HelloWorldC^tF[X
            // HelloWorldImplIuWFNgoCh
            orb.bind("Hello", new HelloWorldImpl());
        } catch (Exception ex) {
            ex.printStackTrace();
        }
  }
}

(3) [gトび出

3.2ORBノ登^IuWFNgi[gIuWFNgjフ参ニを得て、 フ参ニHトソbhフゼgトび出sB [gIuWFNgフ参ニ邽߂ɂ́AORB#lookup()\bhgpB

import oni.orb.*;
import oni.net.*;

public class Client {
    public static void main() {
        try {
            // ORB̏
            LaneManager laneManager = LaneManager.getDefaultLaneManager();
            ORB orb = new ORB(laneManager);

            // ORBāAServerNLaneManger(łlocalhost:12345)ORB
            // "Hello" ƂOœo^IuWFNg̃[gQƂセ
            ObjectURL url = new ObjectURL("localhost", "Hello");
            HelloWorld remoteHelloWorld = (HelloWorld)orb.lookup(url);
            
	    // lbg[Nzノ呼び出
            String myName = "michel";
            String ret = remoteHelloWorld.greeting(myName);
            System.out.println("HelloWorld said.. \"" + ret + "\"");

            // LaneManagerフ終
            laneManager.dispose();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

4 \bhトび出フオuWFNgフ転

Oni ORBナは、\bhフ慰値フ型C^tF[XNXノIuWFNg̎QƂn邩Al(Rs[jn邩܂B

E^C^tF[X̏ꍇ

C^tF[Xw肵ꍇ́AIuWFNg̃[gQƂnB n郊[gQƂ̎ƒC^tF[X́AԒľ^łB ‚܂Ał͂̃[gQƂgāAIuWFNg 삷邱ƂłB A[Jł̌Ăяoɉ”\ł _ELXgiC^tF[X炻̎NXւ̃LXgȂǁj łȂB
OI oni.orb.ObjectByValue NX́AĽ^NX̂ƂƓ悤ɃRs[nB

E^NX̏ꍇ

NXw肵ꍇ́ÃIuWFNg̃Rs[nBāA ł̃NX삵ĂÃIuWFNgɂ͔fȂB ʂŌƂ ObjectByValuê悤ȓƂȂB IuWFNgf[^Ƃđ肽ꍇȂǂ 炪֗ł낤B ȂAIuWFNgVACYđM邽߁Aw肷 NX Serializable łKvB

5 [gQ

[gQƂ̓IuWFNg]ɎIɐ邪AȉORBNXp 邱ƂłB [gQƂ́Ajava.lang.reflect.ProxyNXɂ IɐꂽvLVIuWFNgłB ̃vLVIuWFNǵA [gIuWFNgւ̎QƏA\bhĂяȍlbg[N oRŃ[gIuWFNg֓`B ܂A[gIuWFNg C^tF[XłȂAoni.orb.RemoteObjectC^tF[XĂA ̃C^tF[XʂĎQƏȂǂセるこニで

EORB#lookup()\bh

ORB#lookup()\bhgp驍アニにて、w閧オInetPoint ORBノバChトuWFNgフゼgQニ

EORB#attach()\bh

ORB#attach()\bhヘ、IuWFNgKネ飽ナゼJORB oChA[gQニぶJフ鄭^b`ニ呼B ̃\bhgƂɂă[gQƂƒC^tF[X 삷邱ƂłB

6 O

Oni ORBł̓\bȟĂяoŔO̓lbg[NzɌĂяo ] throw B ƂĂ͗OIuWFNg̓VACY鎞 X^bNg[XĂ܂Ƃ_łBOni ORBł́AƂ肠 lbg[NzɎ薰ッ酸 fillInStackTrace() ト ARuntimeExceptionノ関ては呼び出フス^bNg[XKvナと考 ゜、ロに燃untimeExceptionブ0RBRuntimeExceptionニて、 throw B フめ、[JIuWFNgニ捺うcatch驍アニはでななて

7 ネソbhトび出

7.1 oneway\bhトび出

ORBノ鏑フ機\ニて、oneway\bhR[B ヘソbhフ呼び出vフORBɑAԒlO炸Ƀ^[@\łBʏvoid^̃\bhR[ ׂčłBȂAĂяoRuntimeExeptionƂ͎̂ĂB
Oni ORBoneway\bhR[gpɂ́AC^tF[X void^ŗOȂ\bh̐ڔ"oneway"̃\bh`ΗǂB ȂA"oneway"̑啶͋ʂȂ(case insensitive)B

:
public interface HelloWorld2 {
   public void greetingOneway(String message);
}

7.2 compress(k)\bhĂяo

[gQƂ\bhR[́Albg[N邽 ȂɃlbg[NgpB compress\bhR[́A \bhR[̈ԒlGZIPkē]@\łA lbg[N̐ߖɂ‚Ȃ”\B
Oni ORBoneway\bhR[gpɂ́AC^tF[X \bh̐ڔ"compress"̃\bh`ΗǂB ȂA"oneway"̑啶͋ʂȂ(case insensitive)B

:
public interface DataServer {
   public void putDataCompress(String name, byte[] data);
   public byte[] getDataCompress(String name);
}

Copyright © 2001-2002 CyberStep, Inc. All Rights Reserved.

Oni \tgEFA