2.10 JSM起動クラス
JSMが開始すると、内部の起動クラスが実行されます。このクラスは、すべてのJSMサービス・クラスをロードしてXML変換を実行し、できるだけ多くのApache Xalanクラスをロードします。
ユーザー定義の起動クラスは、manager.propertiesファイルの「startup.class」プロパティで指定できます。
startup.class=com.acme.MyStartup
ユーザー定義の起動クラスの場合、実行可能インターフェースを実装する必要があります。JSMはこのロードされたクラスを実行可能オブジェクトにキャストして、実行メソッドを実行します。これは、メイン・メソッドで行われるため、専用の追加スレッドは作成されません。
内部の起動クラスとユーザー定義の起動クラスは、JSMが開始してクライアントとコンソールの接続を受け入れる前に実行されます。
例 1
package com.acme ;
public final class MyStartup implements Runnable
{
public void run ()
{
try
{
/* コードをここに記載 */
}
catch ( Throwable t )
{
t.printStackTrace () ;
}
}
}
例 2
package com.acme ;
public final class MyStartup implements Runnable
{
private int m_sleepTime = 0 ;
public MyStartup ()
{
/*
JSMManagerはゼロ引数コンストラクタを使用する
*/
int seconds = 60 * 20 ; // Every 20 minutes
Thread thread = new Thread ( new MyStartup ( seconds ) ) ;
thread.start () ;
}
public MyStartup ( int seconds )
{
/*
スリープ時間を指定する
*/
if ( seconds <= 0 )
{
seconds = 0 ;
}
m_sleepTime = seconds * 1000 ;
}
public void run ()
{
if ( m_sleepTime == 0 )
{
/*
JSMManager呼び出し
*/
System.out.println ( "JSM warmup call" ) ;
try
{
warmup () ;
}
catch ( Throwable t )
{
t.printStackTrace () ;
}
return ;
}
/*
スリープ時間を指定したMyStartup呼び出し
*/
while ( true )
{
try
{
Thread.sleep ( m_sleepTime ) ;
System.out.println ( "MyStartup repeat warmup call" ) ;
warmup () ;
}
catch ( Throwable t )
{
t.printStackTrace () ;
}
}
}
private final void warmup () throws Exception
{
System.out.println ( "MyStartup warmup" ) ;
/* コードをここに記載 */
}
}