我有一个需求,需要将一些数据保存在表中,由于持久化可能需要一些时间,所以我想要持久化一个日志。但我不希望程序等到持久化完成再继续执行。
我知道我需要使用线程来完成这个任务,但在企业应用程序中创建线程是不被鼓励的。
因此,我开始阅读关于工作管理器的相关资料,并尝试了在websphere应用服务器8.5中编写示例程序。
我使用了来自websphere的asynchbeans.jar,但现在我担心我正在编写特定于供应商的代码。
然后我发现了Oracle Java文档中描述的commonj工作API,并考虑使用fabric3中的commonj API。
我的疑问是,是否有更好的方法来完成相同的任务?例如EJB方法?还是工作管理器对我的要求很好?
java.util.concurrent.Executors.newSingleThreadExecutor()
来获取一个ExecutorService
,然后提交一个Callable
实例。在Callable
实例的call
方法中,有一些代码用于将数据持久化到数据库中。这是在 ee 应用程序中有效的方法吗?我想在 Callable 实例中使用 jndi。我可以这样做吗? - Krishna Chaitanyajava:...
JNDI查找,并且直接从默认命名空间查找JNDI名称不是Java EE最佳实践。所以,不,不是真的。你最好查找数据源并将其传递给Callable(final local variable或constructor/member variable)。 - Brett Kail