12

JBoss にデプロイされた EJB のエントリ ポイントを探しています。

サーブレットには load-on-startup 、その で使用するタグがありますweb.xml

init()EJBの同様の機能を探しています。

4

5 に答える 5

25

EJB には 3.1 まで存在しませんでした。EJB 3.1 では、シングルトン Bean を使用してそれをシミュレートできます。

アプリケーションの起動/シャットダウン コールバックから:

   @Startup
   @Singleton
   public class FooBean {

       @PostConstruct 
       void atStartup() { ... }

       @PreDestroy
       void atShutdown() { ... }

   }

それ以外の場合は、古き良きトリックに頼って a を使用する必要がありますServletContextInitializer

Glassfish のライフサイクル リスナーなど、アプリケーション固有の拡張機能がいくつかあります。JBossにはそういうものがあるのか​​もしれません。

しかし、もし私があなただったら、できる限り標準機能に頼ろうとします。非標準の拡張機能の問題は、トランザクションを開始できるかどうかなど、何ができるかどうかが正確にわからないことです。

于 2010-06-08T07:56:58.497 に答える
4

JBoss AS 5.1をターゲットにしていて、 JBoss EJB 3.0 Extensionsを使用してもかまわない場合は、EJBをブートストラップするサービスBeanを構築できます。サービスがアノテーション付きのインターフェースを実装@Managementし、署名付きのメソッドを宣言する場合public void start() throws Exception、JBossはサービスの開始時にこのメソッドを呼び出します。次に、初期化するEJBで専用のメソッドを呼び出すことができinit()ます。

@Service
public class BeanLauncher implements BeanLauncherManagement
{
    @EJB private SessionBeanLocal sessionBean;

    @Override
    public void start() throws Exception
    {
        sessionBean.init();
    }
}

@Management
public interface BeanLauncherManagement
{
    public void start() throws Exception;
}

追加のライフサイクルイベントを含む、これに関する詳細は、ここで見つけることができます。

于 2012-11-12T23:10:44.540 に答える
4

この記事では、サーバーの起動時に機能を呼び出す 7 つの方法について説明します。ただし、すべてが JBoss で動作するわけではありません。

物事を始めるための 7 つの方法。GlassFish および WebLogic での Java EE スタートアップ クラス

于 2012-02-09T15:31:18.277 に答える
1

起動時に実行するメソッドの先頭に次の行を追加できるはずです。

@Observer("org.jboss.seam.postInitialization")
于 2010-06-27T13:13:55.193 に答える
1

マネージド Bean は、JBoss の起動時に何らかのプロセスを実行するために使用できます。構成ファイルにそのマネージド Bean のエントリを追加する必要があります。

于 2010-06-18T11:20:57.990 に答える