2013-03-24 35 views
7

Tôi đang cố gắng gọi phương thức khi ứng dụng web của tôi bắt đầu. Mục đích là để khởi động một bộ đếm thời gian thực hiện một số công việc tại các khoảng thời gian xác định. làm thế nào để tôi gọi một chức năng helloworld khi ứng dụng web jboss 7.1 của tôi khởi động?phương thức gọi khi khởi động máy chủ

Trả lời

4

khác sau đó ContextListeners, bạn cũng có thể có một servlet trong web.xml tải về khởi động:

<servlet> 
    <servlet-name>mytask</servlet-name> 
    <servlet-class>servlets.MyTaskServlet</servlet-class> 
    ... 
    <load-on-startup>1</load-on-startup> 
</servlet> 

servlet này có thể bắt đầu công việc bằng cách sử dụng bất cứ điều gì có nghĩa là bạn muốn, xem ví dụ link này.

Nhưng bạn không nên sử dụng phương pháp đó, imho.

Sử dụng khung/lib đã được chứng minh như quartz hoặc một công cụ tương tự. Có rất nhiều vấn đề/vấn đề trong việc chạy và đồng bộ các tác vụ trong các máy chủ web và tốt hơn là sử dụng một số công cụ đã được chứng minh hơn là lặp lại những sai lầm mà các công cụ này đã gặp và giải quyết. Có thể mất một chút thời gian để nắm bắt nhưng sẽ tránh được nhiều cơn đau đầu.

Bản thân Jboss có một số công cụ cho mục đích đó: lập lịch và quản lý công việc. Không bao giờ được sử dụng vì vậy không thể khuyên bạn nên.

1

Sử dụng ServletContextListener được định cấu hình trong web.xml của bạn. Viết mã khởi động bộ hẹn giờ theo phương thức contextInitialized.

2

Khám phá Quartz Scheduler. Bạn có thể sử dụng CronTrigger để kích hoạt trong khoảng thời gian xác định. Ví dụ, mỗi 5 phút sẽ trông như thế này:

"0 0/5 * * * ?"

Ý tưởng là để thực hiện các giao diện Job đó là nhiệm vụ để chạy, sắp xếp nó bằng cách sử dụng SchedulerFactory/Scheduler, xây dựng bắt đầu JobCronTrigger và nó.

Có một ví dụ rất rõ ràng here.

6

Nếu bạn muốn chạy một số mã trước khi ứng dụng web của bạn phục vụ bất kỳ khách hàng nào của bạn, bạn cần có ServletContextListener.

Tạo lớp người nghe của bạn

import javax.servlet.*; 

public class MyServletContextListener implements ServletContextListener { 

public void contextInitialized(ServletContextEvent e) { 
    //Call your function from the event object here 
} 

public void contextDestroyed(ServletContextEvent e) { 

} 
} 

Đặt lớp trong WEB-INF/classes

Đặt một < nghe> phần tử trong tập tin web.xml.

<listener> 
    <listener-class> 
    com.test.MyServletContextListener 
    </listener-class> 
</listener> 

Hy vọng điều này sẽ hữu ích.

+0

tôi có thể thêm mã khởi động máy chủ Http trong phương thức contextInitialized không – Hema

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