Spring WS + JIBX“没有端点适配器”错误

我使用JIBX从XSD文件创建我的实体类。 它在pom.xml中配置,并在我执行“maven:compile”时创建类

我也用spring-ws。 当我使用SOAPUI测试我的Web服务时,我得到了臭名昭着的错误;

"No adapter for endpoint GetTransactionsResponse getTransactions(GetTransactionsRequest), Is your endpoint annotated with @Endpoint, or does.." 

我检查了所有关于该错误的线程,但没有帮助。

我有一个Parent.xsd,它导入2个子xsd。 它们都在同一个文件夹中。 这就是我的spring-ws-servlet的样子;

     /WEB-INF/Parent.xsd                    

这是我的端点类;

 @Endpoint public class TransactionsEndpoint { public static final String NAMESPACE = "nmapespace"; @PayloadRoot(namespace = NAMESPACE, localPart = "getTransactionsRequest") @ResponsePayload public GetTransactionsResponse getTransactions(@RequestPayload GetTransactionsRequest request) { GetTransactionsResponse transactionsResponse = new GetTransactionsResponse(); return transactionsResponse; } } 

GetTransactionsResponse /由JIBX创建的请求类。

我的wsdl看起来像这样;

     

pom文件是;

   org.springframework.ws spring-ws-core   org.apache.ws.xmlschema xmlschema-core 2.0.2  

我不确定问题是否因为有3个xsd文件而且它们之间出现了问题,或者它是JIBX的配置问题,因为当我尝试使用JAXB而不是JIBX时,它有效!

端点映射存储在散列映射中,其中包含基于命名空间和@PayloadRoot批注的本地部分的键(请参阅下面的代码)。 您目前(我假设是)java类的命名空间中的拼写错误… nmapespace而不是命名空间。

如果这与xsd和随后发布的wsdl(未显示)中的内容不匹配,则无法找到映射。 这是您可能会遇到该错误的原因之一(很多)。

 public class PayloadRootAnnotationMethodEndpointMapping extends AbstractAnnotationMethodEndpointMapping { ... @Override protected QName getLookupKeyForMethod(Method method) { PayloadRoot annotation = AnnotationUtils.findAnnotation(method, PayloadRoot.class); if (annotation != null) { QName qname; if (StringUtils.hasLength(annotation.localPart()) && StringUtils.hasLength(annotation.namespace())) { qname = new QName(annotation.namespace(), annotation.localPart()); } else { qname = new QName(annotation.localPart()); } return qname; } else { return null; } } 

如果这不是问题,您可能需要在问题中添加更多信息(soap request,xsds,wsdl)。

我也有类似的问题(花了好几天)但是在我的案例中,Spring WS和Spring版本是不兼容的,请检查你的Spring WS和Spring版本是否匹配。