java - 如何从 JAX Web 服务中访问原始请求 xml?

标签 java spring web-services soap

我有一个带注释的 JAX Web 服务:

@WebMethod(action = "http://my.services/ITService/postIT")
@WebResult(name = "postITResponseTypeDef", targetNamespace = "http://my.services/ITService/", partName = "parameters")
public ResponseParameterList postIT(
    @WebParam(name = "postITRequestTypeDef", targetNamespace = "http://my.services/ITService/", partName = "parameters")
    PostITRequestTypeDef parameters,
    @WebParam(name = "ITHeaderTypeDef", targetNamespace = "http://my.services/ITService/", header = true, partName = "request_Header")
    ITHeaderTypeDef requestHeader)
    throws ITSoapException
;

在实现此服务的类中,我需要访问 SOAP 请求的原始 xml(最好是字符串)。我怎样才能访问它?

谢谢!

最佳答案

这可以通过 SOAP 消息处理程序完成:

public class CustomAddressValidatorHandler implements SOAPHandler<SOAPMessageContext> {
   @Override
   public boolean handleMessage(SOAPMessageContext context) {
       ...
   } 
}

插入 JAX-WS 链需要一个 handler-chain.xml 文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<javaee:handler-chains 
     xmlns:javaee="http://java.sun.com/xml/ns/javaee" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <javaee:handler-chain>
    <javaee:handler>
      <javaee:handler-class>package.handler.CustomAddressValidatorHandler</javaee:handler-class>
    </javaee:handler>
  </javaee:handler-chain>
</javaee:handler-chains>

这会将处理程序应用于请求:

@WebService
@HandlerChain(file="handler-chain.xml")
public class ServerInfo {
    ...
}

也看看这个 tutorial .

关于java - 如何从 JAX Web 服务中访问原始请求 xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22070627/

相关文章:

java - 如何让两个项目在同一行

Java战舰检查命中位置

java - Spring Data Rest 能否提供足够的灵活性以用于现实世界的应用程序?

java - 如何使 `@Endpoint(id = "health")` 在 Spring Boot 2.0 中工作?

java - 给定一个 WSDL 文件,通过 Internet 使用 Web 服务的步骤是什么?

web-services - Web 服务是否应该抛出异常或结果对象

java - 等到elementToBeClickable不是其他元素会收到点击异常的解决方案

java - 使用 JDOM 解析 XML 时出错 - 序言中不允许内容

java - Spring Controller 中Post方法的请求体

wcf - 用于非 dot.NET 客户端的 WCF 中的 REST