Spring WS + JIBX“端点没有适配器"错误 [英] Spring WS + JIBX "No adapter for endpoint" Error
问题描述
我使用 JIBX 从 XSD 文件创建我的实体类.它在 pom.xml 中配置并在我执行maven:compile"时创建类
I use JIBX to create my entity classes from XSD files. It is configured in pom.xml and creates classes when I do a "maven: compile"
我也使用 spring-ws.当我用 SOAPUI 测试我的网络服务时,我得到了臭名昭著的错误;
I also use spring-ws. When I test my web service with SOAPUI I get the infamous error;
"No adapter for endpoint GetTransactionsResponse getTransactions(GetTransactionsRequest), Is your endpoint annotated with @Endpoint, or does.."
我检查了这里所有关于该错误的线程,但没有帮助.
I checked all the threads here about that error but didn't help.
我有一个 Parent.xsd,它导入了 2 个孩子的 xsd.它们都在同一个文件夹中.这就是我的 spring-ws-servlet 的样子;
I have one Parent.xsd and it imports 2 child xsd's. They are all in the same folder. This is how my spring-ws-servlet looks like;
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sws="http://www.springframework.org/schema/web-services"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-2.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<bean name="xsdCollection" class="org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection">
<property name="xsds">
<list>
<value>/WEB-INF/Parent.xsd</value>
</list>
</property>
</bean>
<context:component-scan base-package="mypackage"/>
<sws:annotation-driven/>
<sws:dynamic-wsdl id="my" portTypeName="myResource" locationUri="/ws/my"
targetNamespace="myschame">
<sws:xsd location="/WEB-INF/Parent.xsd"/>
</sws:dynamic-wsdl>
<sws:interceptors>
<bean class="org.springframework.ws.soap.server.endpoint.interceptor.SoapEnvelopeLoggingInterceptor">
<property name="logRequest" value="true"/>
<property name="logResponse" value="true"/>
</bean>
<bean class="org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor">
<property name="xsdSchemaCollection" ref="xsdCollection"/>
<property name="validateRequest" value="true"/>
<property name="validateResponse" value="true"/>
</bean>
</sws:interceptors>
这是我的端点类;
@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;
}
}
由 JIBX 创建的 GetTransactionsResponse/Request 类.
GetTransactionsResponse/Request classes created by JIBX.
我的 wsdl 看起来像这样;
My wsdl looks like this;
<wsdl:operation name="getTransactions"><wsdl:input message="tns:getTransactionsRequest" name="getTransactionsRequest">
</wsdl:input><wsdl:output message="tns:getTransactionsResponse" name="getTransactionsResponse">
</wsdl:output></wsdl:operation>
pom 文件是;
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.ws.xmlschema</groupId>
<artifactId>xmlschema-core</artifactId>
<version>2.0.2</version>
</dependency>
我不确定问题是因为有 3 个 xsd 文件并且它们之间出了问题,还是 JIBX 的配置问题,因为当我尝试使用 JAXB 而不是 JIBX 时,它起作用了!
I am not sure if the problem is because there are 3 xsd files and something goes wrong between those or it is a configuration problem with JIBX because When I try to use JAXB instead of JIBX, it worked!
推荐答案
我也有类似的问题(花了好几天)但是在我的情况下问题是 Spring WS 和 Spring 版本不兼容,请检查您的 Spring WS 和 Spring 版本是否匹配.
I also had similar issue(spent several days) however in my case issue being Spring WS and Spring versions being incompatible, check whether your Spring WS and Spring versions match.
这篇关于Spring WS + JIBX“端点没有适配器"错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!