2012-06-28 17 views
6

Tôi có Glassfish 3.1.2 chạy trong cụm và ứng dụng EJB 3.1. Và tôi cần hai loại phương pháp theo lịch trình trong ứng dụng của tôi:Làm thế nào để chạy một phương pháp theo lịch trong một cụm cho một nút và cho tất cả?

  • một loại chạy chỉ một lần (vào một nút duy nhất) một lần một ngày
  • và tốt bụng khác chạy trên tất cả các nút (mỗi 1-2 phút) - Họ không cần phải chạy một cách syncron! Yêu cầu chỉ là loại này chạy trên mọi nút.

Tôi không biết làm thế nào để bắt đầu với cụm này - vấn đề, điều này có thể với @Schedule (và làm cách nào) hoặc tôi có cần thứ gì khác không?

+0

Có câu trả lời cho câu hỏi này trong câu trả lời này : http://stackoverflow.com/a/11465568/280244 – Ralph

Trả lời

8

Tôi phải đối mặt với cùng một vấn đề chính xác (cần một cluster bộ hẹn giờ và bộ hẹn giờ per node) và gặp phải câu hỏi này. Vì vậy, đối với bất cứ ai quan tâm:

Nếu bạn khai báo bộ đếm thời gian với @Schedule (..., dai dẳng = true), bạn sẽ nhận được một bộ đếm thời gian cluster lưu trữ trong bộ đếm thời gian db (có thể được di chuyển)

Nếu bạn khai báo bộ hẹn giờ với @Schedule (..., persistent = false), bạn sẽ nhận được bộ hẹn giờ node không được lưu trữ trong bộ định thời db (không thể di chuyển)

+0

Đây có phải chỉ là một quan sát, hay là có một số phim tài liệu? – Ralph

+0

@Ralph Hành vi này được xác minh trên ứng dụng của tôi (chạy trên cụm Glassfish 3). Tôi không thể tìm thấy tài liệu chính xác nhưng tôi có thể giải thích hành vi: Nếu bộ hẹn giờ liên tục trong cơ sở dữ liệu hẹn giờ (cơ sở dữ liệu MySQL trong trường hợp của tôi, bạn không thể sử dụng db được nhúng trên cụm), nó được chia sẻ cho tất cả các nút thông qua cơ sở dữ liệu. Đối với bộ đếm thời gian không liên tục, mỗi nút không có cách nào để biết rằng bộ đếm thời gian tồn tại trên các nút khác, do đó bộ hẹn giờ mới được tạo trên mỗi nút. – Cascader

+0

Bạn cũng có thể đọc [this] (http://www.java.net/forum/topic/glassfish/glassfish/non-persistent-singleton-timers-clustered-environment-using-gf31) – Cascader

0

Bạn có thể xem bằng cách sử dụng JMS. Đối với phương thức cần chạy trên một nút duy nhất, hãy sử dụng hàng đợi và đối với những phương thức cần chạy trên tất cả các nút, hãy sử dụng một chủ đề.

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