2012-11-24 17 views
5

Làm cách nào để thực hiện tác vụ mỗi năm trong ứng dụng web tự động? Lớp Timer có hữu ích cho việc này không? Tôi cũng nghe nói về Quartz? Tôi đã đăng ký trên trang của họ nhưng có vẻ như không miễn phí. Cảm ơn sự giúp đỡ của bạn.Thực thi tác vụ mỗi năm trong ứng dụng web Java

Trả lời

3

Tôi khuyên bạn nên sử dụng thứ gì đó như cron. Yêu cầu của bạn rất giống với hoạt động của cron daemon UNIX. Có một thư viện java cung cấp khả năng tương tự được gọi là cron4j (http://www.sauronsoftware.it/projects/cron4j/).

Dưới đây là một số lịch trình bạn có thể sử dụng.

+0

Cách sử dụng cronjob nếu tôi đang chạy trên cửa sổ? –

+1

@DiegoRamos: Cron dành cho môi trường Linux. Tương đương với môi trường Cron cho windows là cửa sổ task scheduler. Một phương pháp sẽ là tạo một nhiệm vụ mới bằng cách sử dụng công cụ đó và đặt một tệp jar làm tập lệnh. tệp jar có thể chứa mã mà bạn cần chạy theo định kỳ. phương pháp khác là bạn có thể tạo một kịch bản lệnh và thêm nó vào công cụ lập lịch tác vụ thay vì tệp jar. Xem liên kết sau. http://stackoverflow.com/questions/12034177/running-a-java-program-as-a-scheduled-task –

3

Quartz chắc chắn là một lựa chọn tốt, đó là free và mã nguồn mở và sử dụng Apache 2.0 License (bạn không phải đăng ký để tải xuống). Bạn cũng có thể chỉ cần sử dụng cron nếu bạn đang ở trong một môi trường * nix.

Bạn cũng có thể sử dụng một java.util.Timer nhưng tôi sẽ chỉ làm như vậy nếu trường hợp sử dụng của bạn là cực kỳ tầm thường và bạn chắc chắn rằng bạn khởi động lại Timer của bạn một cách chính xác dựa trên một số loại lớp kiên trì khi khởi động của ứng dụng web của bạn.

+1

cron => hoặc một Scheduled Task trong Windows. – Max

+0

Tôi cũng làm một công việc cron, vì nó không cần một máy ảo để chạy cả năm, chỉ cần thực hiện một lần. – Andy

+0

Cảm ơn bạn đã trả lời nhưng xin lỗi làm thế nào tôi có thể sử dụng cronjob trong môi trường Windows? điều đó có khả thi không? Tôi đã đọc về một cronexpression nhưng nó có vẻ là chỉ cho unix? –

2

Cân nhắc kiểm tra với các bên liên quan kinh doanh nếu công việc chỉ chạy mỗi năm một lần thực sự phải được hoàn toàn tự động. Theo kinh nghiệm của tôi, có khả năng là sẽ có những thay đổi nhỏ đối với lịch biểu (ví dụ: ngày nào trong tuần mà công việc sẽ chạy trong năm nay?) Hoặc các bước của công việc sau một thời gian dài như vậy.

Ngoài ra, sẽ có các công việc theo lịch trình khác được thêm vào hệ thống trong tương lai không? Nếu không - nó sẽ có giá trị thêm chi phí (thực hiện, thử nghiệm, giám sát vv) của một thực hiện tự động cho hệ thống nếu chỉ có một công việc mỗi năm? Một cái gì đó chạy thường xuyên này có thể dễ dàng bị lãng quên và không ai có thể nhận thấy khi nó bị hỏng.

Cân nhắc giải pháp thay thế này: thêm nút ở đâu đó trong ứng dụng của bạn để khởi động công việc theo cách thủ công, có thể trên trang quản trị. Nếu ứng dụng của bạn có trang tổng quan hoặc trang đích, hãy thêm một số thông tin chỉ hiển thị cho một số người dùng nhất định, chẳng hạn như quản trị viên- ví dụ: "Công việc X phải chạy lần trước vào ngày 11/23/2011- hãy bắt đầu chạy tiếp theo trước ngày 30/11/2012 ".

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