Oni ORB KCh |
hLg̖ڎ |
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[
Oni ORBOnizlbg[N̏ɍ\zꂽORBŁAȉ̂悤ȓB
- APIVv
- ProxyIuWFNg̓I
- oneway, compress\bhR[@\
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
ȒPȃR[hgOni ORB̎gp@ȉ̗ŏЉB
- [gĂяô߂̃C^tF[X̒`
- ORBւ̓o^
- [gĂяo
(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 łKvBpublic interface HelloWorld { public String greeting(String name); }(2) ORBւ̓o^
ȉAHelloWorldC^tF[XIuWFNgORBɃoChio^jR[hłB ORBɃIuWFNgo^ɂ́AORB#bind()\bhgpB ORBɓo^邱ƂɂāÃzXg̃ANZX\ɂȂB ȂAoCh̍ۂ oChw肷KvB [go^IuWFNgɃANZXۂ́A ̃oChgăIuWFNg肷Bimport 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()\bhgpBimport 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(); } } }
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[nBE^NX̏ꍇ
NXw肵ꍇ́ÃIuWFNg̃Rs[nBāA ł̃NX삵ĂÃIuWFNgɂ͔fȂB ʂŌƂ ObjectByValuê悤ȓƂȂB IuWFNgf[^Ƃđ肽ꍇȂǂ 炪֗ł낤B ȂAIuWFNgVACYđM邽߁Aw肷 NX Serializable łKvB
[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
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驍アニはでななて
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)Bpublic interface HelloWorld2 { public void greetingOneway(String message); }
[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)Bpublic interface DataServer { public void putDataCompress(String name, byte[] data); public byte[] getDataCompress(String name); }
|
Copyright © 2001-2002 CyberStep, Inc. All Rights Reserved. |
Oni \tgEFA |