远程请求分派器
远程请求分派器 (RRD) 是应用程序框架、Servlet 和 JavaServer Pages 的 Web 容器的可插入扩展,以将资源的当前 Java™ 虚拟机 (JVM) 外部的内容包括在发送到客户机的响应中。
远程请求分派器是其他组件和许多产品的可扩展基础结构,以将定制扩展(例如,生成器和处理程序)添加至 RRD 扩展。远程请求分派器扩展增强了标准 Java Platform, Enterprise Edition (Java EE) javax.servlet.RequestDispatcher 实现,使它知道通过使用 Web Service 在 WebSphere® Application Server Network Deployment (ND) 核心组中的机器之间进行通信来查找远程资源。远程请求分派器扩展会向始发服务器报告远程服务器上发生的任何错误。它还可以使用 SSL 来进行服务器之间的安全通信和 WS-Security 安全上下文传播。请参阅 rrdSecurity.props 文件主题以了解更多信息。
RRD Portlet 支持将远程请求分派器概念延伸到 Portlet 并增强 Portlet 容器,以在当前 JVM 资源外部调用 Portlet。
通过使用 RRD 扩展,可以通过将远程服务器包括在单元中来实现在多台机器和 JVM 之间共享请求负载。如果 RRD 资源要消耗大量内存或处理器,那么调用资源与正在同一 JVM 中运行的标准 RequestDispatcher 一样不会受影响。RRD 通过将资源分配到不同的 JVM 中来解决此问题。
功能
- 远程服务器上的请求被当作 INCLUDE 请求来处理。将分派类型当作 INCLUDE 来启动过滤器和请求侦听器。
- 将可序列化请求属性和查询参数发送至远程服务器。
- 通过 LTPA 令牌将安全上下文发送至远程服务器。
- Servlet 参数和输出流
请求参数被传递至远程服务器。
- 远程包括的资源设置的响应头被忽略,与本地服务器上包括的资源相似。仍然可以设置内部头(例如,Set-Cookie),并且传播回去。
- 所有原始请求头都将传递给远程服务器
- 与 WebSphere Application Server 的插件相似。
- 方法调用将像在本地服务器上执行方法调用一样返回状态。例如,getServer 将返回本地服务器名,而 isSecure 将返回对“本地”服务器的请求是否安全。
- Cookie 和会话
- 会将 Cookie 作为头的一部分传递至远程服务器。
- 本地服务器和远程服务器中的会话对给定客户机使用同一 Cookie 或会话标识,类似于同一服务器中包含的会话。如果会话存在与远程服务器上,那么会话 cookie 将同时包含这两个服务器的信息,以维护与远程服务器的亲缘关系。
- 异常
- 如果远程服务器上发生了异常,那么该服务器将返回特定于 RRD 的 Web Service 故障,该故障中包含由应用程序创建的原始异常。
- 如果本地服务器和远程服务器上都存在异常类,那么尝试在本地服务器上重新创建原始异常。如果不能重新创建原始异常,那么会构造并使用特定于 RRD 的 ServletException。
- 本地服务器重新创建异常以进行错误处理。
- 动态高速缓存
当启用了动态高速缓存时,将在本地机器和远程机器上执行高速缓存。
- 安全性
可以使用 SSL 来对应用程序服务器之间传递的 RRD 消息进行加密。缺省情况下,启用了 SSL。但是,还必须通过 RRD 传递安全上下文需求,以确保安全性状态在远程机器中可用。RRD 使用 WS-Security 来传递此信息。但是,缺省情况下已禁用此安全上下文传播。请参阅 rrdSecurity.props 文件主题以了解其他信息。