• 在java web项目中实现随项目启动的额外操作


    前言

      在web项目中经常会遇到在项目启动初始,会要求做一些逻辑的实现,比如实现一个消息推送服务,实现不同类型数据同步的回调操作初始化,或则通知其他客户服务器本项目即将启动,等等。对于这种要求,目前个人了解到的方式只要有三种。

    1. 通过新加一个Servlet。然后在web.xml注册该Servlet,通过该servlet的init()来实现处理逻辑。
        <servlet>
              <servlet-name>servlet_test</servlet-name>
              <servlet-class>com.guozg.test.service.ServletTest</servlet-class>
              <load-on-startup>5</load-on-startup>
        </servlet>
        <servlet-mapping>
              <servlet-name>servlet_test</servlet-name>
              <url-pattern>/servletTest</url-pattern>
        </servlet-mapping>

     

    class ServletTest extends HttpServlet{
        @Override
        public void init() throws ServletException {
            //do something;
        }
    }

      2.  添加web服务器的监听ServletContextListener来实现,需要实现

    class ServletListenerTest implements ServletContextListener{
        @Override
        public void contextInitialized(ServletContextEvent servletContextEvent) {
            //do something when system start
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent servletContextEvent) {
            //do something while the system crash
        }
    }
    <listener>
      <listener-class>com.guozg.test.service.ServletListenerTest</listener-class>
    </listener>

      3.  通过Spring的监听事件,注册一个Spring初始化容器时的监听,实现ApplicationListener<ContextRefreshedEvent>接口,并实现onApplicationEvent()方法。

    /**
     * @auther guozg
     */
    @Service
    public class FolderUpdataLister implements ApplicationListener<ContextRefreshedEvent> {
            @Override
        public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) {
          //do something
        }

      在spring的监听中,如果用到springmvc,由于父子容器的原因,会两次调用初始化容器事件,使用时要注意考虑。但是优点是此时可以使用spring的注入调用其他service。前面两种与web服务器有关的,在实际运用中可能会使用不成功,就是在web.xml中找不到目标类,也即是web.xml的包中没有引入目标类的包。当出现这种情况就可以选用第三种了。还有一种方式是在web服务器中再加一个Filter。好了,目前知道的就是这些,具体使用看情况而定。另外为了不占用web 服务器启动的资源和时间,可以考虑新起线程来做操作。

  • 相关阅读:
    vbr mp3
    NDK setup error
    转载 MPEG2视频解码在ARM11上的优化
    arm程序设计优化
    小情歌
    android update project
    Linux环境下的DNW使用
    2010的计划
    Setting up UDEV rules to grant access to your phone
    Debugging Native Code for android
  • 原文地址:https://www.cnblogs.com/guozhigang/p/9855009.html
Copyright © 2020-2023  润新知