次の 2 つの質問があります。
GlassFish 4
Eclipse Juno などを介してサーバー上で Java クラス (サーブレットや JavaBean ではない) を開始する方法は?起動時に実行する適切な方法は何ですか?
機能を使用し、サーバー上で実行する必要がある Java クラスがJDNI
あります。それはどのように行うことができますか?
サーバーの起動時に実行することに関するいくつかの情報を見つけました。これは、次のオプションに要約されます。
@Startup
と@Singleton
アノテーションの両方を使用する(私が理解しているように、これは特に EJB 用です)LifecycleListener
インターフェイスの実装Startup
インターフェイスの実装
『Oracle GlassFish Server Application Development Guide』には、次のように明確に記載されています。
ライフサイクル リスナー モジュールは非推奨です。それらのサポートは、下位互換性のために含まれています。代わりに org.glassfish.api.Startup インターフェースを実装することをお勧めします。
org.glassfish.api.*
インポートを追加し、クラスにStartup
インターフェイスを実装するEclipse
ように指示したとき、それは非推奨であると警告されました。私のクラスはEJB ではないので、何が残っているのかわかりません。とにかく先に進みStartup interface
、その要件を満たすために、次のメソッドを追加しました。
@Override
public Lifecycle getLifecycle() {
return Lifecycle.SERVER;
}
Eclipse でサーバーを停止して起動しましたが、クラスは実行されていないようです。クラスに System.out.println() 呼び出しがありますが、そのメッセージが [サーバー] タブと [コンソール] タブにもサーバー ログにも表示されませんでした。
だから、これは私が立ち往生したものです。
あなたの提案をいただければ幸いです。
説明:
質問の私の起動関連の部分は、サーバー(つまりGlassFish
)の起動(Webアプリケーションの起動ではありません)に言及しています。サーバーの起動時にこのクラスを強制的GlassFish
にインスタンス化し、サーバーの存続期間中実行させる必要があります。
基本的には、キューを監視し、さまざまな送信者からの要求に応答するために起動する必要があるメッセージ リスナーです。