Ich versuche, einen Code First-Webdienst mithilfe der Camel CXF-Komponente verfügbar zu machen. Durch einige der verfügbaren Beispiele Montage, habe ich auf die folgende Route Definition kommen:Implementieren eines CXF-Webdienstes mit Camel
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/spring"
xmlns:cxf="http://camel.apache.org/schema/cxf" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd">
<bean id="productServiceImpl" class="com.demo.ws.CustomerServiceImpl" />
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="cxf:bean:productServiceEndpoint" />
<bean ref="productServiceImpl" />
<!-- log input received -->
<to uri="log:output" />
</route>
</camelContext>
<cxf:cxfEndpoint id="productServiceEndpoint"
address="http://localhost:9001/productService" serviceClass="com.demo.ws.CustomerService" />
</beans>
Die SEI und Implementierungsklassen Ich verwende trivial sind:
@WebService(serviceName="customerService")
public interface CustomerService
{
public String getCustomerById(String customerId);
}
public class CustomerServiceImpl implements CustomerService
{
@Override
public String getCustomerById(String customerId)
{
System.out.println("Called with "+customerId);
return "Hello " +customerId;
}
}
Wenn das Projekt ausgeführt wird, die korrekt aufgerufen wird, um die Implementierungsklasse WebService, der String „Hallo [name]“ Rückkehr, aber die zurück Körper aus SOAPUI leer ist:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body/>
</soap:Envelope>
können Sie mir helfen t zu produzieren Er gibt den Wert in der Antwort zurück? Danke
Vielen Dank für Ihre Antwort:
Sie auch einen Blick auf die Kamel doc Beispiele nehmen. Ich habe mir das Dokument und den Link angeschaut. Das Hauptproblem ist, dass ich für jede Methode einen PayloadName erstellen muss. Ich habe mich gefragt, ob die SOAP-Antwort automatisch vom Web-Service generiert werden könnte (die Return-String in der Nachricht umhüllt) – user2824073
@ user2824073, die SOA-Prinzipien brechen würde. Jede Methode sollte klar definiert und dokumentiert sein, damit die generierte WSDL von Entwicklern mit minimalem Aufwand verwendet werden kann. Von meinem Verständnis basierend auf Ihrem Kommentar wollen Sie eine Methode, die eine andere Antwort zurückgibt? Bitte klären Sie – Namphibian