在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