2013-01-21 33 views
7

Thực ra, tôi có dòng sau:Quản lý hoạt động thời gian rất dài với Java

  1. tài nhấp chuột vào nút "khổng lồ hoạt động";
  2. Gọi là dịch vụ RESTful;
  3. Dịch vụ còn lại gọi một HugeOpServiceBean, là một EJB;
  4. EJB này sẽ thông báo cho hàng đợi JMS để thực hiện chức năng HugeOperation;
  5. HugeOperation Điều này có thể có hai hay nhiều hiện thực, vì vậy, mỗi MDBean đó đang lắng nghe cho nó sẽ chạy (có nghĩa là nó có thể là trong .ear khác)

tôi sẽ muốn nghe như thế nào các bạn làm hoặc đề nghị tôi làm cho tôi có thể nhận được "trạng thái" của các MDBeans này. Về cơ bản, mỗi MDBean sẽ chạy một số phương pháp trong một danh sách một số loại đối tượng, vì vậy, calc tỷ lệ phần trăm thực hiện phải dễ dàng, tôi chỉ không biết làm thế nào và đó là quyết định kiến ​​trúc tốt nhất mà tôi có thể thực hiện để thực hiện điều này có thể truy cập trong một số dịch vụ RESTful.

Xin cảm ơn trước.

Trả lời

2

Do tiêu thụ và điều trị MDB được giao dịch, tất cả hoặc không có gì. Quá trình hiển thị sẽ phức tạp và sẽ yêu cầu giao dịch phụ để cập nhật tiến độ. Tôi sẽ đề nghị chunnk công việc trong nhiều thông điệp JMS trong EJB và theo dõi tiến độ về các thông điệp JMS được tiêu thụ thành công sau này. Xem Patterns of Enterprise Integation

+0

Điều đó thật tuyệt vời, ngoại trừ MDBeans có thể ở những tai khác nhau, điều này không nên biết lẫn nhau. MDBeans biên dịch danh sách những thứ cần thay đổi (thường được chỉ định trong tai của mdbean), vì vậy, tôi không thể ủy quyền nó cho EJB. Ngoài ra, EJB của tôi không thể biết được tai nào sẽ đứng dậy và lắng nghe. Bạn có thể đề xuất mẫu nào trong trường hợp này? – caarlos0

+0

@ caarlos0 Tôi đoán MDB đầu tiên có thể làm việc cho MDB khác sau đó. – ewernli

6

Cách RESTful xử lý này sẽ được:

  1. Return một mã trạng thái HTTP 202 'chấp nhận' cho khách hàng, sau khi cuộc gọi đầu tiên, để cho biết rằng yêu cầu đã thành công, nhưng tiếp tục xử lý là cần thiết. Bạn cũng có thể cung cấp URI với phản hồi mà khách hàng có thể sử dụng để truy vấn trạng thái của 'công việc'
  2. Thực hiện điểm cuối mà khách hàng có thể gọi để truy vấn trạng thái công việc.
  3. Khi hoạt động hoàn tất, điểm cuối từ 2) ở trên sẽ phát hành chuyển hướng vĩnh viễn tới URI thực của đối tượng chính được tạo bởi thao tác.
+0

Câu trả lời hay. Làm thế nào bạn đề nghị tôi về việc nhận được tình trạng của MDBeans? Tôi không bao giờ làm bất cứ điều gì như thế này ... – caarlos0

+0

Tôi không nghĩ rằng bạn muốn truy vấn trạng thái của MDB. Thay vào đó, vào cuối của hoạt động, bạn có thể viết trạng thái của nó vào một bảng có thể được truy vấn bởi các EJB khác sau đó. – Perception

+0

@Perception Tôi nghĩ rằng OP đang nói về trạng thái của hoạt động hiện tại. Vì vậy, có nó được viết sau khi giao dịch có vẻ vô ích. – SpaceTrucker

Các vấn đề liên quan