2013-02-21 19 views
5

Tôi có một ứng dụng Java đơn giản mà tôi cần phải chạy mọi lúc (cũng để bắt đầu tự động khi khởi động lại máy chủ).
Tôi đã nghĩ về một trình bao bọc dịch vụ, nhưng phiên bản Windows được trả tiền.
Có cách nào để tôi có thể cấu hình Tomcat để chạy một lớp cụ thể từ một dự án tự động hoặc bất kỳ giải pháp nào khác có thể cho kết quả tương tự không?chạy ứng dụng java không phải trên web trên tomcat

+0

Tự động khởi động đơn giản chưa đủ? – kutschkem

+0

Loại chương trình nào? Liệu nó có giao diện người dùng vv? othewise bạn chỉ có thể tạo một contextcatner tomcat hoặc một servlet và trong phương thức init bạn có thể bắt đầu chương trình của bạn. – Sap

+0

Không có giao diện người dùng. Ứng dụng này chỉ gửi một yêu cầu POST sau mỗi 10 phút và phân tích cú pháp kết quả. Một điều quan trọng là tôi cũng cần phải kiểm tra đầu ra log (System.out) – pantominas

Trả lời

4

Tôi nghĩ nhu cầu của bạn là phải có một ứng dụng (bất kỳ trang web hoặc không web) nào bắt đầu bằng tomcat cùng một lúc.

Vâng, bạn cần phải có một ứng dụng web đơn giản đăng ký người nghe (lắng nghe sự kiện bắt đầu ứng dụng tức là sự kiện bắt đầu tomcat) và khởi chạy lớp học của bạn.

Nó rất đơn giản trong web.xml của bạn, bạn khai báo một người biết lắng nghe như thế này:

<listener> 
     <description>application startup and shutdown events</description> 
     <display-name>ApplicationListener</display-name> 
     <listener-class>com.myapp.server.config.ApplicationListener</listener-class> 
</listener> 

Và trong bạn ApplicationListener lớp bạn thực hiện giao diện ServletContextListener. Dưới đây là ví dụ:

import java.io.File; 

import javax.servlet.ServletContext; 
import javax.servlet.ServletContextEvent; 
import javax.servlet.ServletContextListener; 



/** 
* Class to listen for application startup and shutdown 
* 
* @author HBR 
* 
*/ 
public class ApplicationListener implements ServletContextListener { 
    private static Logger logger = Logger.getLogger(ApplicationListener.class); 

    @Override 
    public void contextDestroyed(ServletContextEvent servletContextEvent) { 
     logger.info("class : context destroyed"); 

    } 

    @Override 
    public void contextInitialized(ServletContextEvent servletContextEvent) { 
     ServletContext context = servletContextEvent.getServletContext(); 
     ///// HERE You launch your class 
     logger.info("myapp : context Initialized"); 
    } 



} 
0

Một google nhanh chóng cho thấy một loạt các lựa chọn:

Cuối cùng, nếu bạn muốn nó trong Tomcat (như một phần của một ứng dụng web) sau đó một cái gì đó như Quartz Scheduler.

0

Hãy xem trên:

  1. http://wrapper.tanukisoftware.com/doc/english/download.jsp
  2. http://commons.apache.org/daemon/jsvc.html

Cả hai sẽ giúp bạn chạy các ứng dụng java như một dịch vụ. Nếu bạn muốn chạy ứng dụng của bạn với tomcat, bạn có thể thực hiện ứng dụng web đơn giản của riêng bạn để chạy ứng dụng của bạn. Bạn có thể sử dụng servlet

  1. rằng bắt đầu từ ngày khởi động máy chủ (cấu hình này trong web.xml)
  2. HTTP lọc
  3. ServletContextListener.