在spring-ws中使用Jaxb2Marschaller时,是否可以使用原始或基本Java类型创建Web服务操作?例如,看起来像这样的一个方法:Jaxb2Marshaller和原始类型
@Override
@PayloadRoot(localPart = "AddTaskRequest", namespace = "http://example.com/examplews/")
public long addTask(final Task task) throws AddTaskFault {
// do something
return 0;
}
我使用maven jaxws插件从我的WSDL生成接口和模型类。当我尝试调用web服务我得到以下错误:
java.lang.IllegalStateException:没有适配器端点[...]:请问您的端点实现类似的MessageHandler或PayloadEndpoint
支持的接口我发现,如果我改变的方法是:
@Override
@PayloadRoot(localPart = "AddTaskRequest", namespace = "http://example.com/examplews/")
public JAXBElement<Long> addTask(final JAXBElement<Task> task) throws AddTaskFault {
final ObjectFactory objectFactory = new ObjectFactory();
return objectFactory.createAddTaskResponse(0L);
}
我能叫它 - 但这个签名是不是与Maven的JAXWS插件生成的接口兼容。
我能做些什么来配置spring-ws能够使用第一种实现或告诉maven jaxws插件生成接口的第二种变体?
更新:我的相关弹簧WS配置条目看起来像:
<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="contextPath" value="com.example.examplews" />
</bean>
<bean class="org.springframework.ws.server.endpoint.adapter.GenericMarshallingMethodEndpointAdapter">
<constructor-arg ref="marshaller" />
</bean>
<bean class="org.springframework.ws.server.endpoint.mapping.PayloadRootAnnotationMethodEndpointMapping">
<property name="order" value="1" />
</bean>
您可以发布您的Spring XML配置?我有一个类似的问题,我通过配置解决了它......这是一段时间后,但如果你张贴你的我可以检查我的正确配置是什么,并发布差异。 – laura 2009-11-12 14:37:50