开发者

Can I write a module/filter that gets fired before the web app get's run in Tomcat?

Can I write a module/filter that gets put into the processing pipleline in Tomcat BEFORE the web application even gets run?

Something that I could turn on/off for each web applicat开发者_如何学Pythonion that tomcat is handling.

is this possible?

So basically it would be a re-usable filter that hooks into the web pipeline that could alter the requests behavior or perform/modify the requests. One example would be to log all ip's, or redirect based on the url, block the request, etc.


If you are using Servlet 3.0 you can. What you do is implement either a ServletContextListener or a ServletContainerInitializer. The code below shows withServletContextListener

@WebListener("auto config listeners")
public class MyListenerConfigurator implements ServletContextListener {
   public void contextInitialized(ServletContextEvent scEvt) {
      ServletContext ctx = scEvt.getServletContext();
      FilterRegistration.Dynamic reg = ctx.addFilter("myFilter", "my.listener.class.MyListener");
      ...
   }

See EE6 docs here. Perhaps the only drawback is that you can add but you cannot remove. And you can only at when the application starts up.

Note: code not tested


Have you considered a ServletContextListener in web.xml?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜