从服务端点内部检索 SOAP 消息上下文

Retreiving the SOAP message context from inside the service endpoint

我有一个 spring 启动应用程序,它使用 spring-boot-starter-web-services 公开 SOAP 网络服务。

我正在使用 EndpointInterceptor 获取请求的 messageContext

@Component
public class GlobalEndpointInterceptor implements EndpointInterceptor {

    @Override
    public boolean handleRequest(MessageContext messageContext, Object endpoint) throws Exception {

        //Here I get the messageContext
    }
}

在我的服务端点中,我有:

@Endpoint
public class CountryEndpoint {

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "addCountryRequest")
    @ResponsePayload
    public AddCountryResponse addCountry(@RequestPayload AddCountryRequest request) {

        //Insert country and get the autogenerated ID

        //Insert the country ID along with the messageContext retreived from the intercepter. I can't get the messageContext here  !
    }
}

如何检索服务端点内的消息上下文

您可以执行以下操作来获取 SOAP 信封:

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "addCountryRequest")
@ResponsePayload
public AddCountryResponse addCountry(@RequestPayload AddCountryRequest request, MessageContext context) {

    //Insert country and get the autogenerated ID

    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    try {
        messageContext.getRequest().writeTo(outputStream);
        String httpMessage = new String(outputStream.toByteArray());
        System.out.println(httpMessage);
    } catch (IOException e) {
        e.printStackTrace();
    }

}