2013-01-21 35 views
7

其實,我有以下流程:管理很長一段時間的操作與Java

  1. 用戶點擊在「巨大的操作」按鈕;
  2. 它稱之爲RESTful服務;
  3. 其餘服務調用HugeOpServiceBean,它是一個EJB;
  4. 這個EJB會告訴JMS隊列做HugeOperation;
  5. 這HugeOperation可以有兩個或兩個以上的實現,所以,這就是監聽它將運行(這意味着它可能是在另外的.ear)

我就喜歡聽每MDBean怎麼你們做或建議我讓我能夠獲得這些MDBeans的「地位」。

基本上,每個MDBean都會在一些對象類型的列表中運行一些方法,因此,計算完成的百分比應該很容易,我只是不知道如何以及哪個是我可以做出的最佳體系結構決策。在某些RESTful服務中可訪問。

在此先感謝。

回答

2

由於MDB的消耗和治療是事務處理,所以沒有或完全沒有。顯示進度將變得複雜,並且需要子交易來更新進度。我建議在EJB中的多個JMS消息中尋找工作,並監控稍後成功使用的JMS消息的進展。請參閱Patterns of Enterprise Integation

+0

這將是偉大的,除了MDBeans可以在不同的耳朵,不應該彼此瞭解。 MDBeans編譯要更改的列表(通常在mdbean的耳朵中指定),所以我不能將它委託給EJB。另外,我的EJB不知道哪個耳朵會起來聽。你可以在這種情況下建議我哪種模式? – caarlos0

+0

@ caarlos0我想第一個MDB可以爲其他MDB工作。 – ewernli

6

的處理,這將是所述的RESTful方式:

  1. 返回「接受」到客戶端的HTTP 202狀態碼,所述第一呼叫之後,以指示該請求是成功的,但是進一步的處理是需要。您還可以提供一個URI,其中包含客戶端可用於查詢「作業」狀態的響應。
  2. 實施客戶端可調用的端點來查詢作業的狀態。
  3. 當操作完成後,上述2)中的端點將對該操作創建的主實體的實際URI發出永久重定向。
+0

很好的答案。你如何建議我獲取MDBeans的狀態?我從來沒有做過這樣的事情...... – caarlos0

+0

我不認爲你想查詢MDB的狀態。相反,在操作結束時,您可以將其狀態寫入一個表,稍後可以由其他EJB查詢。 – Perception

+0

@Perception我認爲OP在談論當前操作的狀態。所以在交易後寫下來似乎沒用。 – SpaceTrucker

相關問題