2008年 3月 28日 金曜日
[Sun SPOT メモ] アイソレット(Isolate)間通信 (2) - プロパティ(Properties)で渡す。
アイソレット(Isolate)間通信に関するメモの続きです。
今回は、2つ目の方法である プロパティ(Properties)による値の引渡しについて紹介します。
以下は、Sun SPOT起動時に実行されるメインのアイソレット(MIDlet)です。ここでは、子アイソレットに渡すデータを格納した Propertiesクラスのインスタンスを、Isolateのコンストラクタに渡しています。また、インスタンスの生成後、setProperty メソッドを呼び出して子アイソレットに2つめのデータを渡しています。
| package org.sunspotworld; import com.sun.spot.util.*; import com.sun.squawk.Isolate; import com.sun.squawk.VM; import java.util.Hashtable; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class IICTestSpot extends MIDlet { protected void startApp() throws MIDletStateChangeException { new BootloaderListener().start(); // monitor the USB (if connected) and recognize commands from host System.out.println("IICTestSpot: Begin." ); // 子アイソレットに渡すデータを用意 final Hashtable props = new Hashtable(); props.put("props1", "Hello" ); try { Isolate isolate = new Isolate( props, // 子アイソレットに引き渡すプロパティ "org.sunspotworld.ChildIsolate", // 実行する子アイソレット new String[0], null, VM.getCurrentIsolate().getParentSuiteSourceURI() ); // さらに、 Isolate の setProperty 呼び出しにより // 子アイソレットにデータを渡す isolate.setProperty("props2", "Duke" ); // 子アイソレットをスタートし、終了するまで待機 isolate.start(); isolate.join(); } catch (Exception ex) { ex.printStackTrace(); } System.out.println("IICTestSpot: End." ); while (true) { Utils.sleep(2000L); } } protected void pauseApp() { } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } } |
子アイソレットはmainメソッドを持ったクラスで、ここでも単純に受け取った値を表示しています。
| package org.sunspotworld; import com.sun.squawk.Isolate; public class ChildIsolate { public static void main(String[] args) { System.out.println("ChildIsolate: Begin." ); Isolate isolate = Isolate.currentIsolate(); String props1 = isolate.getProperty("props1" ); String props2 = isolate.getProperty("props2" ); System.out.println("props1: " + props1); System.out.println("props2: " + props2); System.out.println("ChildIsolate: End." ); } } |
アプリケーション配備後、NetBeans IDEから起動すると、出力ウィンドウに以下のように表示されました 
setProperty を使うとアイソレットを一度生成したあと、後から値を追加できるので main の引数による受け渡しより便利ですね。
Posted at 04:46午後 3 28, 2008 by Shuichi Machida in SunSPOT | 投稿されたコメント[0]