2010-04-14 28 views
5

Tôi có câu hỏi trong việc lên lịch công việc trong ứng dụng web. Nếu chúng ta phải lên lịch công việc trong ứng dụng web, chúng ta có thể sử dụng java util Timer/TimerTask hoặc Quartz (cũng có cơ chế lập kế hoạch khác, nhưng tôi coi Quartz). Tôi đã xem xét một trong những để sử dụng, khi tôi nhấn trang web http://oreilly.com/pub/a/java/archive/quartz.html?page=1 mà nói bằng cách sử dụng bộ đếm thời gian có tác dụng xấu vì nó tạo ra một sợi đó là ra khỏi container kiểm soát trong dòng cuối cùng. Các trang khác thảo luận về Quartz và khả năng của nó, nhưng tôi có thể đọc rằng Quartz cũng sử dụng thread và/hoặc threadpool để lên lịch các nhiệm vụ. Dự đoán của tôi là các chủ đề này cũng không nằm trong vùng chứa kiểm soátQuartz trong ứng dụng Web

Ai có thể làm rõ điều này với tôi Có an toàn không khi sử dụng Quartz trong các ứng dụng web của tôi mà không tạo chủ đề treo hoặc vấn đề khóa? Cảm ơn trước

Trả lời

2

Ai có thể làm rõ điều này với tôi Có an toàn khi sử dụng Quartz trong ứng dụng web của tôi mà không tạo chủ đề treo hoặc các vấn đề về khóa không?

Cả hai bộ đếm thời gian thạch anh và JDK đều bắt đầu không được quản lý chủ đề không có quyền truy cập vào thông tin ngữ cảnh Java EE, đó là vấn đề lớn nhất. Ngoài ra, họ có thể sử dụng tài nguyên mà không có [máy chủ ứng dụng] biết về nó, tồn tại mà không có khả năng kiểm soát số lượng và sử dụng tài nguyên của quản trị viên và cản trở khả năng tắt máy chủ hoặc khôi phục tài nguyên của máy chủ ứng dụng từ thất bại (xem Unmanaged threads).

Có nói rằng, tôi đã không phải đối mặt với chủ đề treo hoặc khóa các vấn đề (tôi đoán nó phụ thuộc vào những gì bạn đang làm với họ mặc dù). Nếu thực sự đây là một mối quan ngại, hãy cân nhắc sử dụng bộ thực thi Timer và WorkManager JSR-237 (hoạt động với chuỗi được quản lý) như Foo-CommonJ thay vì bộ đếm thời gian thạch anh hoặc JDK.

1

Cả hai phương pháp đều tạo chuỗi không được quản lý. Tôi sử dụng Quartz để lập kế hoạch hơn là hẹn giờ java vì nó cung cấp khả năng linh hoạt hơn (biểu thức cron, ví dụ) và nó dễ quản lý hơn.

1

Nếu tôi phải nói trong một dòng, tôi sẽ nói sử dụng Quartz vì nó sẽ quản lý việc lập kế hoạch quản lý liên quan đến công việc cấp thấp cho bạn. Với Timer, bạn có thể làm mọi thứ mà thạch anh làm (thậm chí làm cho các bộ đếm thời gian tiếp tục bỏ phiếu để kiểm tra xem ứng dụng web có đang chạy hay không). Nhưng điều này cần phải được thực hiện trong mã của bạn bởi bạn. Với Quartz tất cả điều này bạn nhận được ra khỏi hộp.

Bây giờ chi tiết Quartz cung cấp 1. Duy trì công việc 2. Quản lý nhóm chủ đề để bạn tạo số lượng đề tài phù hợp và thực hiện công việc chờ sau đó. 3. Servlet khởi tạo được tích hợp với ứng dụng web của bạn. Khi ứng dụng tắt, tôi nghĩ rằng nó sẽ chăm sóc đóng chủ đề của bạn, nhưng tôi đã không thử nó. Vì vậy, tôi sẽ không bình luận nhiều về nó. 4. Lập lịch dựa trên RMI, cho môi trường nhóm.

Có những người khác nữa, nhưng những người này đã là động lực lớn nhất tại sao mọi người sử dụng thạch anh thường xuyên hơn.