2

是否可以在bean 中JEE6使用 Thread来连接外部第三方服务。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 方法将尝试多次连接到服务。它使用 aExecutors.newSingleThreadScheduledExecutor()每隔 x 秒重新尝试连接。

我相信JEE7他们已经为这种事情添加了一个托管执行器。但是可以在中使用普通的执行器吗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 回答