[ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Willem Jiang reassigned CAMEL-1431: ----------------------------------- Assignee: Willem Jiang > camel-cxf and spring DSL does not work very well > ------------------------------------------------ > > Key: CAMEL-1431 > URL: https://issues.apache.org/activemq/browse/CAMEL-1431 > Project: Apache Camel > Issue Type: Sub-task > Components: camel-cxf > Affects Versions: 2.0-M1 > Reporter: Charles Moulliard > Assignee: Willem Jiang > > Hi, > Camel-cxf and camel works very well when the routing is defined like this : > public class ReportIncidentRoutes extends RouteBuilder { > public void configure() throws Exception { > // webservice response for OK > OutputReportIncident OK = new OutputReportIncident(); > OK.setCode("0"); > // endpoint to our CXF webservice > String cxfEndpoint = > "cxf://http://localhost:8080/camel-example/incident" > + > "?serviceClass=org.apache.camel.example.reportincident.ReportIncidentEndpoint" > + "&wsdlURL=wsdl/report_incident.wsdl"; > // first part from the webservice -> file backup > from(cxfEndpoint) > // we need to convert the CXF payload to InputReportIncident that > FilenameGenerator and velocity expects > .convertBodyTo(InputReportIncident.class) > // return OK as response > .transform(constant(OK)); > } > @ContextConfiguration > public class ReportIncidentRoutesTest extends > AbstractJUnit4SpringContextTests { > > private static final transient Log LOG = > LogFactory.getLog(ReportIncidentRoutesTest.class); > > @Autowired > protected CamelContext camelContext; > // should be the same address as we have in our route > private final static String ADDRESS = > "http://localhost:8080/camel-example/incident"; > //private final static QName endpointName = new > QName("http://reportincident.example.camel.apache.org", > "ReportIncidentEndpoint"); > protected static ReportIncidentEndpoint createCXFClient() { > // we use CXF to create a client for us as its easier than JAXWS and > works > JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); > factory.setServiceClass(ReportIncidentEndpoint.class); > factory.setAddress(ADDRESS); > //factory.setEndpointName(endpointName); > return (ReportIncidentEndpoint) factory.create(); > } > @Test > public void testRendportIncident() throws Exception { > > assertNotNull(camelContext); > // create input parameter > InputReportIncident input = new InputReportIncident(); > input.setIncidentId("123"); > input.setIncidentDate("2008-08-18"); > input.setGivenName("Claus"); > input.setFamilyName("Ibsen"); > input.setSummary("Bla"); > input.setDetails("Bla bla"); > input.setEmail("davscl...@apache.org"); > input.setPhone("0045 2962 7576"); > // create the webservice client and send the request > ReportIncidentEndpoint client = createCXFClient(); > OutputReportIncident out = client.reportIncident(input); > // assert we got a OK back > assertEquals("0", out.getCode()); > } > > } > but not when the routing is defined in spring DSL > <?xml version="1.0" encoding="UTF-8"?> > <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" > xsi:schemaLocation=" http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.5.xsd > http://camel.apache.org/schema/osgi > http://camel.apache.org/schema/osgi/camel-osgi.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="webService" > class="org.apache.camel.example.reportincident.beans.WebService" /> > > <bean id="OK" > class="org.apache.camel.example.reportincident.OutputReportIncident"> > <property name="code" value="0"/> > </bean> > > <!-- webservice endpoint --> > <cxf:cxfEndpoint id="reportIncident" > address="http://localhost:8080/camel-example/incident" > wsdlURL="wsdl/report_incident.wsdl" > > serviceClass="org.apache.camel.example.reportincident.ReportIncidentEndpoint" > xmlns:s="http://reportincident.example.camel.apache.org"> > </cxf:cxfEndpoint> > > <camelContext trace="true" xmlns="http://camel.apache.org/schema/osgi"> > > <camel:package>org.apache.camel.example.reportincident.routing</camel:package> > > <!-- CXF route --> > <camel:route> > <camel:from uri="cxf:bean:reportIncident" /> > <camel:convertBodyTo > type="org.apache.camel.example.reportincident.InputReportIncident" /> > <camel:transform> > <camel:method bean="OK" method="code"/> > </camel:transform> > </camel:route> > > > </camelContext> > </beans> > In debugging mode, I see that the outputreportincident object is null when we > call the method declared in the web service. So something happens with Spring > & Cxf. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.