提取使用 Tomcat Valve 接收的 SOAP 消息的方法是什么?



我正在尝试通过扩展org.apache.catalina.valves.ValveBase类来为Apache Tomcat创建自定义Valve。它有方法public abstract void invoke(Request request,Response response) .在我的 Tomcat 容器中,我有 Axis2,它托管了一个 Web 服务。所以我的问题是找到一种使用此自定义阀将 SOAP 消息提取到该 Web 服务的方法。那么使用参数org.apache.catalina.connector.Requestorg.apache.connector.Response获取 SOAP 消息的方法是什么?

由于自定义阀是在 Axis2 收到请求之前执行的,因此您将无法访问 Axis2 解析的 SOAP 消息。您唯一能做的是自己解析消息,然后将原始消息的副本传递给 Axis2(如果您的 valve 不修改消息)或重新序列化消息(如果您的 valve 修改了消息)。

请注意,与其他

用户所说的相反,Axis2 文档中没有任何内容可以帮助您做到这一点。但是,根据您的使用案例(您没有足够详细地描述),您可以使用 Axis2 处理程序来实现您的目标。当然,Axis2 处理器在 Axis2 文档中进行了描述。

你这样做的方式

与你编写 Servlet 或过滤器时提取 SOAP 消息的方式相同:org.apache.catalina.connector.Request实现HttpServletRequestorg.apache.connector.Response实现HttpServletResponse,所以像往常一样使用它们。

如果您不知道如何从HttpServletRequest中提取 SOAP 消息,则必须阅读 Axis2 文档。

最新更新