当前位置: 移动技术网 > IT编程>开发语言>Java > 在java web项目中实现随项目启动的额外操作

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

2018年10月26日  | 移动技术网IT编程  | 我要评论

遂宁市,南昌康之居装饰,缘之空汉化版下载

前言

  在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 服务器启动的资源和时间,可以考虑新起线程来做操作。

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网