0

我们开发了一个项目名称,FirstApplication用于发送,消费消息Activemq和部署Tomcat7。部署后,我们只需触发http://localhost:8080/FirstApplication/PackageName/SecondConsumer一次链接。到目前为止,它很好。

我的疑问,以后如果我们重新启动服务器,我们必须再次触发那个 servlet 对应的链接。而不是这样做,我想配置。

注意:我想要的是,每当Tomcat serverstart.servlet 放在WebApps/FirstApplication/WEB-INF/src/classes/PackageName/SecondConsumer.java.

为此,我尝试使用以下代码使用servletContextListenerclass.

 public class SecondConsumer extends HttpServlet implements ServletContextListener{
 @Override
 protected void service(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   //my business code
 }
 @Override
 public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub

 }

 @Override
 public void contextInitialized(ServletContextEvent arg0) {
// TODO Auto-generated method stub

 }
}

并通过以下方式添加<Listener>到我的文件中。web.xml(which is placed under WebApps/FirstApplication/WEB-INF/web.xml)

    <listener>
    <listener-class>PackageName.SecondConsumer</listener-class>
   </listener>

如果你观察我的代码,我没有在contextInitialized and contextDestroyed方法下实现任何代码。只是我想在server开始时评估这个 servlet 代码。

上面的方法我试过了,还是不行。

请任何人都可以建议我。

谢谢。

4

3 回答 3

4

你应该在一个实现的类中进行初始化ServletContextListener,所以你需要这样的东西

@WebListener
public class AppServletContextListener implements ServletContextListener{

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        System.out.println("ServletContextListener destroyed");
    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
         //do your init steps here  
    }
}

这段代码将在您的服务器启动或停止时执行。请注意,WebListener注解仅适用于 Java EE 6,在此之前您需要<listener>web.xml.

于 2013-09-16T19:12:52.193 回答
1

Tomcat 在运行时创建一个 servlet 实例,因此如果您想调用 servlet,请使用在运行 Tomcat 本身时实际触发的上下文列表器类。

谢谢

于 2013-09-16T19:07:52.423 回答
0

我不太确定,你想要什么。如果你只是想在启动 tomcat 时执行代码,你可以配置一个ServletContextListener

于 2013-09-16T19:12:41.580 回答