我正在使用websphere liberty profile webserver,我已部署了几个应用程序。 这些应用程序正在发送请求消息,我想在不更改应用程序的情况下创建servlet-filter 所以我可以看到应用程序发送和接收的内容。我还想添加新的请求标题。
答案 0 :(得分:4)
您可以使用ServletContainerInitializer注册新的ServletFilters。添加响应头的示例实现可能如下所示:
public class SCI implements ServletContainerInitializer {
@Override
public void onStartup(Set<Class<?>> arg0, ServletContext arg1)
throws ServletException {
arg1.addFilter("myFilter", MyFilter.class).addMappingForUrlPatterns(null, false, "/*");
}
}
MyFilter类看起来像这样:
public static class MyFilter implements Filter {
@Override
public void destroy() { }
@Override
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
if (arg1 instanceof HttpServletResponse) {
((HttpServletResponse) arg1).addHeader("Test", "Test");
}
arg2.doFilter(arg0, arg1);
}
@Override
public void init(FilterConfig arg0) throws ServletException { }
}
然后,您需要使用名为META-INF / services / ServletContainerInitializer的文件注册它,该文件应包含Servlet容器初始化程序的完全限定类名,例如:
test.SCI
通常,您将这些打包在应用程序的jar中,但由于您不想更新应用程序,所以您可以像这样配置服务器:
<featureManager>
<feature>bells-1.0</feature>
</featureManager>
<library id="init">
<file name="path/to/jar"/>
</library>
<bell libraryRef="init"/>
将为所有已启动的Web应用程序调用ServletContainerInitializer,允许您添加过滤器。请注意,将为所有已启动的Web应用程序调用此应用程序,包括集成到Liberty运行时的应用程序,例如管理中心和REST连接器。
答案 1 :(得分:0)
当我尝试安装相同的bells实用程序时,得到了以下响应
CWWKF1295E:不能将bells-1.0资产下载或安装到IBM WebSphere Application Server Liberty(ILAN)19.0.0.4,因为它仅适用于以下产品版本:
使用installUtility查找操作来检索适用于您的安装的资产列表。