我的公司有一个servlet过滤器,我们希望包含在各种第三方Java Web应用程序中。编辑供应商的web.xml文件有些犹豫不决。这种犹豫是否合理?还有另一种方法吗?有问题的应用服务器是Tomcat和Weblogix ......
答案 0 :(得分:5)
如果使用最高版本为2.5的Servlet API - 如果您想要可移植性,则没有其他方法 - 您必须在web.xml中包含Filter
。
如果使用Servlet API 3.0,您可以在jar中使用web-fragment.xml
,或在过滤器上使用@WebFilter
注释,它将自动部署(Web应用程序只应指定{{1} }以包含来自其他模块的声明)
答案 1 :(得分:3)
AFAIK,他们必须进入web.xml。您的犹豫是有道理的 - 我从不喜欢这种修改,因为它很难整合供应商升级。但我不确定你有选择。只需确保您的黑盒/验收测试足够强大,以检测升级过程中滤镜何时掉落。
答案 2 :(得分:2)
是的。
我已经能够以编程方式执行此操作(in Jetty请参阅addFilter()方法),但这是一个特定的Jetty类,因此我不知道一种非容器特定的方法来解决这个问题,所以为了确保您在Tomcat和Jetty上部署代码,您的方法是唯一安全的方法。