[jira] Created: (CAMEL-1431) camel-cxf and spring DSL does not work very well

classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

[jira] Created: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
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


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("[hidden email]");
        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.

Reply | Threaded
Open this post in threaded view
|

[jira] Assigned: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org

     [ 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("[hidden email]");
>         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.

Reply | Threaded
Open this post in threaded view
|

[jira] Updated: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

     [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Willem Jiang updated CAMEL-1431:
--------------------------------

    Description:
Hi,

Camel-cxf and camel works very well when the routing is defined like this :

{code}

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("[hidden email]");
        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());

    }
   

}

 {code}

but not when the routing is defined in spring DSL

 {code}
<?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>
 {code}

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.

  was:
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("[hidden email]");
        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.


> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50455#action_50455 ]

Willem Jiang commented on CAMEL-1431:
-------------------------------------

Hi Charles,

Why are you still keeping the below part in the camel context ?
{code}
   <camel:package>org.apache.camel.example.reportincident.routing</camel:package>
{code}

Your camel context will  have 2 same routing rules.
Please remove it and try again.

Willem



> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50467#action_50467 ]

Charles Moulliard commented on CAMEL-1431:
------------------------------------------

I will remove it and retry

> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50470#action_50470 ]

Charles Moulliard commented on CAMEL-1431:
------------------------------------------

Hi Willem,

Nothing has changed after removing from camel : <camel:package>org.apache.camel.example.reportincident.routing</camel:package>
outputreportincident is always null

> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50601#action_50601 ]

Willem Jiang commented on CAMEL-1431:
-------------------------------------

Hi Charles,

I just found the you made a mistake to calling the bean's method in Spring DSL.
You need to make sure your bean's method code will return a instance of OutputReportIncident.
Camel will put this object into the out message body.

{code}
class MyBean {
public OutputReportIncident setOK() {
     OutputReportIncident. outputReportIncident = new OutputReportIncident();
     outputReportIncident.setCode("0");
      retrun outputReportIncident;
}
{code}

{code}
            <bean id="myBean" class="org.apache.camel.example.reportincident.MyBean">
             <camel:route>
                        <camel:from uri="cxf:bean:reportIncident" />
                        <camel:convertBodyTo type="org.apache.camel.example.reportincident.InputReportIncident" />
                        <camel:transform>
                            <camel:method bean="myBean" method="setOK"/>
                        </camel:transform>
                </camel:route>
{code}

Willem


> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.

Reply | Threaded
Open this post in threaded view
|

[jira] Issue Comment Edited: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50603#action_50603 ]

Charles Moulliard edited comment on CAMEL-1431 at 3/17/09 8:36 AM:
-------------------------------------------------------------------

I will test what you propose.

By the way, Claus in its tutorial does not return anything (http://cwiki.apache.org/CAMEL/tutorial-example-reportincident-part5.html)

{code}
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/part-five/webservices/incident"
                + "?serviceClass=org.apache.camel.example.reportincident.ReportIncidentEndpoint"
                + "&wsdlURL=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)
            // then set the file name using the FilenameGenerator bean
            .setHeader(FileComponent.HEADER_FILE_NAME, BeanLanguage.bean(FilenameGenerator.class, "generateFilename"))
            // and create the mail body using velocity templating
            .to("velocity:MailBody.vm")
            // and store the file
            .to("file://target/subfolder")
            // return OK as response
            .transform(constant(OK));

        // second part from the file backup -> send email
        from("file://target/subfolder")
            // set the subject of the email
            .setHeader("subject", constant("new incident reported"))
            // send the email
            .to("smtp://someone@localhost?password=secret&to=[hidden email]");
    }
{code}



      was (Author: cmoulliard):
    I will test what you propose.

By the way, Claus in its tutorial does not return anything (http://cwiki.apache.org/CAMEL/tutorial-example-reportincident-part5.html)

{code}
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/part-five/webservices/incident"
                + "?serviceClass=org.apache.camel.example.reportincident.ReportIncidentEndpoint"
                + "&wsdlURL=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)
            // then set the file name using the FilenameGenerator bean
            .setHeader(FileComponent.HEADER_FILE_NAME, BeanLanguage.bean(FilenameGenerator.class, "generateFilename"))
            // and create the mail body using velocity templating
            .to("velocity:MailBody.vm")
            // and store the file
            .to("file://target/subfolder")
            // return OK as response
            .transform(constant(OK));

        // second part from the file backup -> send email
        from("file://target/subfolder")
            // set the subject of the email
            .setHeader("subject", constant("new incident reported"))
            // send the email
            .to("smtp://someone@localhost?password=secret&to=[hidden email]");
    }
'code}


 

> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50603#action_50603 ]

Charles Moulliard commented on CAMEL-1431:
------------------------------------------

I will test what you propose.

By the way, Claus in its tutorial does not return anything (http://cwiki.apache.org/CAMEL/tutorial-example-reportincident-part5.html)

{code}
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/part-five/webservices/incident"
                + "?serviceClass=org.apache.camel.example.reportincident.ReportIncidentEndpoint"
                + "&wsdlURL=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)
            // then set the file name using the FilenameGenerator bean
            .setHeader(FileComponent.HEADER_FILE_NAME, BeanLanguage.bean(FilenameGenerator.class, "generateFilename"))
            // and create the mail body using velocity templating
            .to("velocity:MailBody.vm")
            // and store the file
            .to("file://target/subfolder")
            // return OK as response
            .transform(constant(OK));

        // second part from the file backup -> send email
        from("file://target/subfolder")
            // set the subject of the email
            .setHeader("subject", constant("new incident reported"))
            // send the email
            .to("smtp://someone@localhost?password=secret&to=[hidden email]");
    }
'code}



> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50609#action_50609 ]

Charles Moulliard commented on CAMEL-1431:
------------------------------------------

It works when of course I use the string cxf://http://localhost:8080/part-five/webservices/incident ... to declare the cxf endpoint but not when using <cxf:cxfEndpoint ...) in combination with what you propose.

{code}
class MyBean {
public OutputReportIncident setOK() {
     OutputReportIncident. outputReportIncident = new OutputReportIncident();
     outputReportIncident.setCode("0");
      retrun outputReportIncident;
}
{code}

Can you tell me why implementation proposed by Claus in its tutorial does not work ?

Any idea about the error : java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext

> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50610#action_50610 ]

William Tam commented on CAMEL-1431:
------------------------------------

@Charles, are you seeing this problem in a non-OSGi environment?  

> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50622#action_50622 ]

Willem Jiang commented on CAMEL-1431:
-------------------------------------

Hi Charles,
Clause's Java DSL will set the out message's body with the instance of OutputReportIncident,
{code}
   // return OK as response
    .transform(constant(OK));
{code}

Because  Camel Spring's <constant>, <simple> tag don't support the hold the bean's instance,
so we can use the <method> to return an instance of  OutputReportIncident for <transform> to use.
Basicaly, the <method> tag is mapped into MethodCallExpression in Java, the expression
value is the method return value.
You can find the magic from the package of org.apache.camel.model.language  in camel-core.

For the java.lang.IllegalStateException, I wrote a comment in CAMEL-1427, please check it out.

BTW, I also write a Spring configuration file which is based on  Clause's example in CAMEL-1465,
You may take it as an example.

Willem


> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.

Reply | Threaded
Open this post in threaded view
|

[jira] Commented: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

    [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50628#action_50628 ]

Charles Moulliard commented on CAMEL-1431:
------------------------------------------

@Willem,

I don't have this error ( java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext) in a non-OSGI environment

> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.

Reply | Threaded
Open this post in threaded view
|

[jira] Resolved: (CAMEL-1431) camel-cxf and spring DSL does not work very well

JIRA jira@apache.org
In reply to this post by JIRA jira@apache.org

     [ https://issues.apache.org/activemq/browse/CAMEL-1431?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Willem Jiang resolved CAMEL-1431.
---------------------------------

    Resolution: Won't Fix

> 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 :
> {code}
> 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("[hidden email]");
>         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());
>     }
>    
> }
>  {code}
> but not when the routing is defined in spring DSL
>  {code}
> <?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>
>  {code}
> 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.