Jaxb2Marshaller und primitive Typen

Ist es möglich, erstellen Sie eine web-service-operation mit primitiv oder grundlegende Java-Typen bei der Verwendung der Jaxb2Marschaller in spring-ws? Zum Beispiel eine Methode so Aussehen:

@Override
@PayloadRoot(localPart = "AddTaskRequest", namespace = "http://example.com/examplews/")
public long addTask(final Task task) throws AddTaskFault {
 //do something
 return 0;
}

Ich bin mit dem maven-jaxws-plugin zum erzeugen der Benutzeroberfläche und Modell-Klassen von meinem WSDL. Wenn ich versuche, rufen Sie den webservice bekomme ich die folgende Fehlermeldung:

java.lang.IllegalStateException: Kein adapter für den Endpunkt [...]: ist Ihre endpoint-Implementierung einer unterstützten interface MessageHandler oder PayloadEndpoint

Fand ich heraus, dass wenn ich die Methode ändern, dass:

@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);
}

Ich bin in der Lage, es zu nennen -, aber diese Signatur ist nicht kompatibel mit der Oberfläche, die mit dem maven-jaxws-plugin.

Was kann ich tun, um die Konfiguration von spring-ws, um in der Lage sein, auf die erste Art der Umsetzung oder zu sagen, maven jaxws-plugin zum generieren der zweiten Variante der Schnittstelle?

UPDATE: Meine relevanten spring-ws config-Einträge sehen so aus:

<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>
  • Können Sie veröffentlichen Sie Ihre spring-xml-Konfiguration? Ich hatte ein ähnliches problem, und ich löste es durch Konfiguration... es war eine Weile zurück, aber wenn Sie per post verkaufen kann ich überprüfen was meine richtige conf-war und post-Unterschiede.
Schreibe einen Kommentar