Hi,

You can not use the rsServer bean to send the reqeuest to CXFRS server.
You need to define a client rsClient for CXFRS endpoint to use.

Just like this

<cxf:rsServer id="rsServer" address="http://localhost:${CXFTestSupport.port1}/CxfRsRouterTest/route"; serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService"
   loggingFeatureEnabled="true" loggingSizeLimit="20"/>

 <!-- Defined the client endpoint to create the cxf-rs producer -->
<cxf:rsClient id="rsClient" address="http://localhost:${CXFTestSupport.port2}/CxfRsRouterTest/rest"; serviceClass="org.apache.camel.component.cxf.jaxrs.testbean.CustomerService"
   loggingFeatureEnabled="true" />

On Fri Mar  9 07:17:15 2012, GPRSLyons wrote:
Gents-

I am trying to test a camel CXFRS endpoint route and getting the following
*trace*...

org.apache.camel.CamelExecutionException: Exception occurred during
execution on the exchange: Exchange[Message: Hello World]
        at
org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1212)
        at
org.apache.camel.util.ExchangeHelper.extractResultBody(ExchangeHelper.java:509)
        at
org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:442)
        at
org.apache.camel.impl.DefaultProducerTemplate.extractResultBody(DefaultProducerTemplate.java:438)
        at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:126)
        at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:342)
        at
com.akqa.audi.service.product.ProductDataRouteTest.testMoveFile(ProductDataRouteTest.java:26)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
        at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
        at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
        at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
        at
org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74)
        at
org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83)
        at
org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
        at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
        at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:47)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
        at
org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
        at
org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
        at
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
        at
org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
        at
org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
        at
org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
Caused by: java.lang.IllegalArgumentException: The configure bean is not the
instance of org.apache.cxf.jaxrs.client.JAXRSClientFactoryBean
        at
org.apache.camel.component.cxf.jaxrs.CxfRsEndpoint.checkBeanType(CxfRsEndpoint.java:131)
        at
org.apache.camel.component.cxf.jaxrs.CxfRsSpringEndpoint.newJAXRSClientFactoryBean(CxfRsSpringEndpoint.java:75)
        at
org.apache.camel.component.cxf.jaxrs.CxfRsEndpoint.createJAXRSClientFactoryBean(CxfRsEndpoint.java:204)
        at
org.apache.camel.component.cxf.jaxrs.CxfRsProducer$ClientFactoryBeanCache.get(CxfRsProducer.java:358)
        at
org.apache.camel.component.cxf.jaxrs.CxfRsProducer.invokeHttpClient(CxfRsProducer.java:96)
        at
org.apache.camel.component.cxf.jaxrs.CxfRsProducer.process(CxfRsProducer.java:87)
        at
org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
        at
org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
        at
org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
        at
org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:99)
        at
org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:86)
        at
org.apache.camel.processor.UnitOfWorkProducer.process(UnitOfWorkProducer.java:63)
        at
org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:352)
        at
org.apache.camel.impl.ProducerCache$2.doInProducer(ProducerCache.java:324)
        at 
org.apache.camel.impl.ProducerCache.doInProducer(ProducerCache.java:223)
        at 
org.apache.camel.impl.ProducerCache.sendExchange(ProducerCache.java:324)
        at org.apache.camel.impl.ProducerCache.send(ProducerCache.java:169)
        at
org.apache.camel.impl.DefaultProducerTemplate.send(DefaultProducerTemplate.java:111)
        at
org.apache.camel.impl.DefaultProducerTemplate.sendBody(DefaultProducerTemplate.java:124)
        ... 30 more
*
Here is my test:*

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {AppConfig.class})
public class Test {

     @Autowired
     protected CamelContext context;

     @Produce(uri = "file://target/inbox")
     protected ProducerTemplate inbox;

     @EndpointInject(uri = "cxfrs:bean:rsServer")
     protected ProducerTemplate rsServer;

     ...

*Here are my routes:*

@Component
public class TestRouter extends RouteBuilder {

     @Override
     public void configure() throws Exception {
         from("file://target/inbox")
             .to("file://target/outbox");

         from("cxfrs:bean:rsServer")
             .setBody(constant("HI"))
             .setHeader(Exchange.HTTP_PATH, constant(""))
             .to("http://www.google.com?bridgeEndpoint=true";)
             .unmarshal().gzip();

     ...

*Here is my Config:*

<cxf:rsServer id="rsServer" address="/">
                <cxf:serviceBeans>
                        <ref bean="productService"/>
                </cxf:serviceBeans>
         <cxf:extensionMappings>
             <entry key="json" value="application/json"/>
             <entry key="xml" value="application/xml"/>
         </cxf:extensionMappings>
        </cxf:rsServer>

        <camelContext xmlns="http://camel.apache.org/schema/spring";>
                <routeBuilder ref="testRouter"/>
        </camelContext>



I can test the File transfer routes just fine and can access the proxied
page when running this on the server.  How can I send a message to the CXFRS
route in a test?

Thanks!


--
View this message in context: 
http://camel.465427.n5.nabble.com/Testing-Camel-CXFRS-Routes-tp5549188p5549188.html
Sent from the Camel - Users mailing list archive at Nabble.com.




--
Willem
----------------------------------
FuseSource
Web: http://www.fusesource.com
Blog:    http://willemjiang.blogspot.com (English)
        http://jnn.javaeye.com (Chinese)
Twitter: willemjiang Weibo: willemjiang

Reply via email to