Java EE如何在启动时运行类

时间:2013-11-25 05:30:12

标签: java java-ee

我有一个用于Web应用程序后端的java EE程序。它在tomcat服务器中运行。虽然我可以创建类来设置路由等,但是如何创建一个不影响也在启动时运行的路由的类?我想创建一个连接到数据库的类。无论是否请求网页,都需要这样做。我用它做了一堂课 public static void main (String [] args),但是在启动应用程序时如何才能运行?我不明白在发布时调用了什么类。我有web.xml和所有控制路由的类,但是有一个主类可以用来调用它吗?如果没有,如何在服务器启动的同时调用该类?

4 个答案:

答案 0 :(得分:2)

(1)准备一个实现 javax.servlet.ServletContextListener 的课程。

(2)在课程的 contextInitialized(ServletContextEvent event) 方法中编写您的初创代码。

(3)在web.xml中注册类,如下所示。

<listener>
    <listener-class>com.example.YourServletContextListener</listener-class>
</listener>

这可以在没有servlet调用的情况下初始化你的应用程序。

答案 1 :(得分:0)

在servlet init()方法中,您可以执行所有初始化任务(即加载应用程序时需要执行的任务)。另请注意,在web.xml部署文件中,将load-on-startup值设置为1,以指示容器立即加载servlet并调用其init()方法。

答案 2 :(得分:0)

您不应在Web应用程序中使用main方法。 相反,您可以将代码从main方法移动到该类的构造函数,或者在该类中创建一个新的公共方法。

然后在你的servlet中使用Init方法来创建一个Class的实例并调用该方法。

Servlet Init仅在首次访问servlet或启动服务器时调用一次(通常)。

这意味着在加载servlet期间只调用一次类。

答案 3 :(得分:0)

创业公司EJB Singleton怎么样?

import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;

@Startup
@Singleton
public class StartUpService {

    @PostConstruct
    public void start() {
        // what you want to execute at startup
    }
}