我有一个函数我想在tomcat启动后直接执行并成功加载其所有属性。我不想使用ServletContextListener,因为这将需要在tomcat启动之前启动该函数。有人可以建议如何解决这个问题吗?
答案 0 :(得分:6)
ServletContextListener.contextInitialized(..)
是在为给定应用程序初始化所有servlet和过滤器之后调用的方法。
ServletContextListener
,其中一些在其他人之前被调用(逻辑上)更新我现在假设你的设置,虽然你没有分享它:
在这种情况下,您有两种选择:
ServletContextListener
中为春天之后定义web.xml
,从而保证在它之后调用它答案 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
。