启动事件后的Tomcat与spring

时间:2011-01-20 13:11:32

标签: java spring tomcat

我有一个函数我想在tomcat启动后直接执行并成功加载其所有属性。我不想使用ServletContextListener,因为这将需要在tomcat启动之前启动该函数。有人可以建议如何解决这个问题吗?

3 个答案:

答案 0 :(得分:6)

ServletContextListener.contextInitialized(..)是在为给定应用程序初始化所有servlet和过滤器之后调用的方法。

  • 如果有多个ServletContextListener,其中一些在其他人之前被调用(逻辑上)
  • 如果有多个应用程序(因此有多个上下文),其中一些应用程序在其他应用程序之前启动。

更新我现在假设你的设置,虽然你没有分享它:

  • 你通过监听器(而不是servlet)开始弹簧
  • 在spring中配置hibernate

在这种情况下,您有两种选择:

答案 1 :(得分:0)

您可以创建一个启动servlet,然后将其添加到web.xml的末尾:

<servlet>
        <servlet-name>StartupServlet</servlet-name>
        <servlet-class>com.your.package.MyStartupServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
</servlet>


public class MyStartupServlet extends HttpServlet {

    public void init(ServletConfig config) throws ServletException {
        try {
             //  Startup code here
        } catch (Exception e){
            // Log exception
        }
    }

    public java.lang.String getServletInfo() {
        return "StartupServlet";
    }
}

答案 2 :(得分:0)

我认为 JMX Tomcat支持可以满足您的要求,即使容器中没有部署ServletContextListener