[Seasar-user:3174] Re: S2RMIのプログラムをサービス化したい
Asarima
asarima
2006年 2月 10日 (金) 17:03:25 JST
Asarimaです。
S2RMIのサーバプログラムのサービス化の件ですが、
とりあえず下記のようにしてstopさせることができました。
1.stopメソッドをもつIStoppableインターフェースを作成します。
package examples.service.main;
public interface IStoppable {
void stop();
}
2.RemotingMainクラスはIStoppableを実装します。
public class RemotingMain implements IStoppable
3.RemotingMainクラスにstopメソッドを実装します。
新しいスレッドを作成してstaticなexitメソッドを呼びます。
public void stop() {
Thread destroyer = new Thread() {
public void run() {
RemotingMain.exit();
}
};
destroyer.start();
}
4.RemotingMainクラスにexitメソッドを実装します。
コンテナをdestroyしてexitします。
public static void exit() {
if (container != null) {
System.out.println("デストロイヤー参上!");
container.destroy();
System.exit(0);
}
}
5.stopを呼び出すクライアントプログラムとdiconファイルを書きます。
public class RemotingStop {
private static final String PATH="dicon/RemotingStop.dicon";
public static void main(String[] args) {
S2Container container = S2ContainerFactory.create(PATH);
container.init();
try {
IStoppable service = (IStoppable)container.getComponent
("remotingStopper");
service.stop();
} finally {
container.destroy();
}
}
}
(dicon/RemotingStop.diconファイル抜粋)
<component name="remotingStopper" class="examples.service.main.
IStoppable">
<aspect>remoting</aspect>
</component>
RemotingMainを実行し、その後でRemotingStopを実行すれば終了します。
以前紹介したページより簡単になったと思いますが、javaはあまり
慣れていないので、実用には足りないところが多いかと思います。
その点ご指摘いただければ幸いです。
Seasar-user メーリングリストの案内