2

外部のサードパーティ サービスに接続するBeanJEE6内でスレッドを使用しても問題ありません。CDI @Singleton@Produces

私はまさにこれを行うJEE6戦争を持っています:

import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;


@Singleton
@Startup
public class MyBean {

    @Produces
    public SomeService getSomeService() {

        /** Retry a number of times to connect to some service **/
        SomeService someService = retry("127.0.0.1");

        return someService;
    }
}

retry メソッドは、サービスへの接続を何度も試行します。a を使用して、Executors.newSingleThreadScheduledExecutor()x 秒ごとに接続を再試行します。

私はJEE7彼らがこの種のことのために Managed Executor を追加したと信じています。しかし、で通常の Executor を使用しても問題ありませんかJEE6

4

2 に答える 2

1

Java EE 6 では、EJB 内でスレッドを開始することはできません。Java EE 7 では、もう少し緩和されています。

于 2013-10-09T16:31:07.897 に答える
0

JEE6 で時間のかかる操作を実行するには、EJB で @Asynchronous アノテーションを使用できます。別のコンテナ管理スレッドで非同期にメソッドを開始します。すべて合法です。これが良い例です: http://www.adam-bien.com/roller/abien/entry/conveniently_transactionally_and_legally_starting

于 2013-11-28T17:14:48.327 に答える