如果需要代理服务器执行通过普通的产品设置未提供的功能(如定制记录),那么可以为该代理服务器创建定制过滤器。
开始之前
- 确定包含您所创建过滤器的工件的存储位置。可以从本地或远程文件系统导入此工件。
- 必须知道您要在其中安装定制过滤器的代理服务器的名称。
- 必须启动用于控制此代理服务器的管理控制台,它尚未启动。
关于此任务
过滤器对功能提供可选的辅助控制权,该控制权超出通常由典型产品设置提供的控制。例如,应用程序可能会使用记录过滤器机制来阻止具有特殊消息密钥的所有事件。
过程
- 创建定制过滤器。
- 创建用于扩展 com.ibm.wsspi.proxy.filter.http.HttpDefaultFilter 的类。
- 覆盖抽象 doFilter 方法以及(可选)init 和 destroy 方法。如果覆盖 init 和 destroy 方法,那么必须调用这些方法的超级版本以保留过滤器生命周期功能。
- 编写使用 HttpProxyServiceContext 接口的新 doFilter 方法。
可编写此新的 doFilter 方法,以便它可以:
- 更改任何与请求或响应相关联的工件,如响应本身、响应代码或头。
- 更改任何与请求和响应都相关联的工件。
- 获取关于请求或响应的信息。
- 获取有关请求和响应的信息。
- 使用代理服务器过滤器的受管 Bean (MBean) 和 proxyFilterMbean 来确定过滤器的正确序号。
proxyFilterMbean = AdminControl.queryNames('type=ProxyServerFilterBean,*')
AdminControl.invoke(proxyFilterMbean, 'viewAllFilters')
会显示代理服务器上所有过滤器的处理顺序。
- 创建过滤器描述符文件 filter-context.xml
此文件用于定义具有此描述符的所有过滤器。以下示例说明了基本版本的 filter-context.xml 文件。
在此示例中,该描述符确定对请求和响应运行给定过滤器的位置和时间。过滤器点确定运行过滤器的位置。在此示例中,过滤器在接收到请求后运行。
序号确定过滤器的处理时间(相对于同一过滤器点的其他过滤器)。序号越大,则过滤器在处理序列所处的位置越靠前。
<?xml version="1.0" encoding="UTF-8>
<filter-context xmlns="http://www.ibm.com/2003/FilterContextSchema">
<description>Proxy Filter Sample descriptor</description>
<display-name>Proxy Sample Filter</display-name>
<filter>
<filter-name>HttpRequestFilter</filter-name
<filter-class>com.ibm.ws.proxy.sample.HttpRequestFilter</filter-class>
<description>HTTP sample filter to run at REQUEST filter point</description>
<display-name>HTTP Request Sample</display-name>
<protocol-name>HTTP</protocol-name>
<filter-point>RequestReceived</filter-point>
<ordinal>1000</ordinal>
</filter>
</filter-context>
- 将过滤器的已编译 .class 文件和过滤器描述符捆绑到 JAR 文件。
- 导入包含定制过滤器的工件(JAR 文件)。
- 在管理控制台中,单击。
- 选择本地文件系统或远程文件系统以指示 JAR 文件的位置。
- 指定 JAR 文件的标准名称。
JAR 文件的标准名称包含该文件所位于的目录路径以及文件名。如果不知道 JAR 文件的标准名称,那么可以使用浏览功能来找到该文件。
- 创建包含此工件的业务级应用程序 (BLA)。
- 在管理控制台中,单击。
- 在名称字段中,为正在创建的新应用程序指定一个名称。
还可以在描述字段中指定应用程序的描述。
- 单击应用。
- 从工件创建 BLA 组合单元 (CU)。
- 在部署资产表中,单击添加 > 添加资产。
- 选择在第一步中导入的工件的名称,然后单击继续。
- 根据需要更改组合单元设置,然后单击修改目标。
- 在可用部署目标列表中选择要在其中部署此 CU 的代理服务器,然后单击确定。
单击确定时,产品会将组合单元映射至所选代理服务器。
- 指定此组合单元的关系选项。
- 单击完成。
要验证产品是否已成功添加 CU,请单击application_name。如果产品成功添加 CU,那么该 CU 的名称会显示在此 BLA 的已部署资产列表中。
- 启动代理服务器。
- 启动包含过滤器的 BLA。
下一步做什么
使用代理服务器过滤器的 MBean (proxyFilterMbean) 来验证过滤器是否已安装在代理服务器上,以及是否以正确顺序(相对于部署在代理服务器上的其他过滤器而言)对其进行处理。
如果需要更改处理此过滤器的顺序,请针对 proxyFilterMbean MBean 运行 modifyOrdinal 命令。