Est-il possible de créer une opération de service Web en utilisant des types Java primitifs ou de base lors de l'utilisation du Jaxb2Marschaller dans spring-ws? Par exemple, une méthode qui ressemble à ceci:Types Jaxb2Marshaller et primitifs
@Override
@PayloadRoot(localPart = "AddTaskRequest", namespace = "http://example.com/examplews/")
public long addTask(final Task task) throws AddTaskFault {
// do something
return 0;
}
J'utilise le plugin Maven pour générer l'interface et les classes de modèle de mon WSDL. Lorsque je tente d'appeler le webservice je reçois l'erreur suivante:
java.lang.IllegalStateException: Aucun adaptateur pour terminal [...]: Votre point final mettre en œuvre une interface prise en charge comme MessageHandler ou PayloadEndpoint
J'ai découvert que si je change la méthode que:
@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);
}
Je suis capable de l'appeler - mais cette signature n'est pas compatible avec l'interface générée par le plugin Maven.
Que puis-je faire pour configurer spring-ws pour pouvoir utiliser le premier type d'implémentation ou pour dire à maven jaxws plugin de générer la seconde variante de l'interface?
MISE À JOUR: Mes entrées pertinentes de configuration printemps-ws ressembler à ça:
<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>
Pouvez-vous poster votre configuration xml printemps? J'ai eu un problème similaire et je l'ai résolu à travers la configuration ... il y a un certain temps, mais si vous postez le vôtre, je peux vérifier ce que ma conf correcte était et afficher les différences. – laura