“没有端点适配器”,类标记为@XmlType作为返回类型

时间:2018-01-29 05:57:11

标签: java spring spring-boot soap soapserver

我在使用spring-boot实现SOAP Web服务时遇到问题。

我有课

@Endpoint
public class EndpointPortTypeImpl implements EndpointPortType {
    @PayloadRoot(
            namespace = "...",
            localPart = "getReq")
    @ResponsePayload
    @Override
    public GetResp getReq(@RequestPayload GetReq parameters) {
        return new GetLinkedAcctResp();
    }
}

GetResp生成类GetReqEndpointPortType和接口wsdl

当我尝试访问此服务时,我得到了

java.lang.IllegalStateException: No adapter for endpoint [public com.mydomain.GetResp com.mydomain.EndpointPortTypeImpl.getReq(com.mydomain.GetReq)]: Is your endpoint annotated with @Endpoint, or does it implement a supported interface like MessageHandler or PayloadEndpoint?
    at org.springframework.ws.server.MessageDispatcher.getEndpointAdapter(MessageDispatcher.java:302)
    at org.springframework.ws.server.MessageDispatcher.dispatch(MessageDispatcher.java:235)
    at org.springframework.ws.server.MessageDispatcher.receive(MessageDispatcher.java:176)
    at org.springframework.ws.transport.support.WebServiceMessageReceiverObjectSupport.handleConnection(WebServiceMessageReceiverObjectSupport.java:89)
    at org.springframework.ws.transport.http.WebServiceMessageReceiverHandlerAdapter.handle(WebServiceMessageReceiverHandlerAdapter.java:61)
    at org.springframework.ws.transport.http.MessageDispatcherServlet.doService(MessageDispatcherServlet.java:293)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)

这是因为XmlRootElementPayloadMethodProcessor可以使用@XmlType@XmlRootElement注释的类型处理参数,但返回值只能使用@XmlRootElement进行注释。

我生成的GetResp@XmlType注释,因此XmlRootElementPayloadMethodProcessor不支持它。

由于显而易见的原因,我无法将@XmlRootElement添加到GetResp,我不想实现自己的MethodReturnValueHandler

如何配置spring-boot以使用没有@XmlRootElement注释的返回值?

0 个答案:

没有答案