簡體   English   中英

如何在Java EE環境中創建線程?

[英]How to create threads in Java EE environment?

我有一個要求,我必須在表中保留一些數據,持久可能需要一些時間。 基本上我想堅持一個日志。 我不希望執行等到持續完成。

我知道我必須使用線程來完成這項任務,我知道不鼓勵在企業應用程序中創建線程。

所以我開始閱讀有關工作管理器的知識,並在websphere應用服務器8.5中理解並嘗試了一個示例程序。

我在websphere中使用了asynchbeans.jar,現在我很困擾我正在編寫特定於供應商的代碼。

然后我遇到了在Oracle java文檔中描述的commonj work api。 現在我想使用fabric3的commonj api。

我懷疑的是,有沒有更好的方法來完成同樣的任務? 一種EJB方式? 或者工作經理對我的要求有好處嗎?

你有一些選擇:

  1. 異步bean。 如您所述,這些是特定於供應商的。
  2. commonj幾乎不是特定於供應商的。 據我所知,它只由IBM WebSphere Application Server和BEA WebLogic實現。 該API實際上被Java EEConcurrency Utilities取代,這是最好的選擇。
  3. EJB @Asynchronous方法。 需要使用EJB(某些不需要的復雜性)。
  4. EJB計時器。 需要使用EJB,需要可序列化的數據。
  5. JMS。 可能需要使用MDB來接收消息,需要可序列化的數據。
  6. 實際上創建線程。 EE規范不建議這樣做,但只要您不嘗試使用EE構造( lookup("java:...") ,JPA,UserTransaction等),那么您應該沒問題。

JavaEE7有托管執行程序,您可以嘗試。 您可以使用它生成任務,並在處理程序中接收托管回調。 這是EE標准的一部分,應該與平台無關。

在這里查看JDoc:

http://docs.oracle.com/javaee/7/api/javax/enterprise/concurrent/ManagedExecutorService.html

如果您需要確保所有日志條目都是安全編寫的,那么您可能應該將JMS與持久性消​​息一起使用。 否則,您可以使用@Asynchronous EJB方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM