I found out that JAXRS Client only sends 1 parameter. So i will just have to configure my service class to only accept 1 parameter instead of two. Ill just wrap it in a transfer object.
Anyway, maybe as a enhancement to camel-cxf jaxrs, hopefully we can also use and support different rest clients such as Httpclient and URLStream so form parameters can also be allowed. Regards, Jejo jejmaster wrote: > > Hi Willem, > > I just used the TestProcessor to see the value of the inMessage.getBody() > because even if there's no processor, the parameters really gets null when > routed. > > I am digging the code right now at CxfRSProducer. And it seems that the > problem is in the Reflection part in the method invokeProxyClient. > > Object response = method.invoke(target, parameters); > > i have logged the parameters before this part and the values were still in > there. > > I have also tried updating how JAXRSClientFactoryBean (cfb) is used as a > jaxrs client. > > Example: > > BindingFactoryManager manager = > cfb.getBus().getExtension(BindingFactoryManager.class); > JAXRSBindingFactory factory = new JAXRSBindingFactory(); > factory.setBus(cfb.getBus()); > manager.registerBindingFactory(JAXRSBindingFactory.JAXRS_BINDING_ID, > factory); > Object targetClass = cfb.create(sfb.getResourceClasses().get(0)); > > Object response = method.invoke(targetClass , parameters); > > > Still, the parameters, gets null after this method.invoke(..) reflection. > > > Im still digging on it and checking if i could replicate the reflection > part. Can you also analyze/replicate it? > > Thanks. > > > > willem.jiang wrote: >> >> Hi, >> >> Can I see the code that you do in the testProcessor? >> If you don't set the exchange.outMessage(), you should get the right >> parameter from the inMessage body. >> >> Willem >> >> >> jejmaster wrote: >>> Hello, >>> >>> I am using the Camel 2.3-SNAPSHOT and implementing the CXFRS routing >>> through >>> ProxyClient. I have setup my JAXRS Service Class method to accept 2 >>> parameters, a String and an Object. The service is working fine when i >>> am >>> invoking it directly but when i am using the cxfrs camel routing, these >>> 2 >>> parameters are having null values. Anyway here's my setup: >>> >>> My Service/Resource Class: >>> >>> @Path("/myservice") >>> Class MyService{ >>> >>> @POST >>> @Path("/myMethod") >>> public ModelCollectionTO getPatients(@FormParam("loc") String >>> location, >>> @FormParam("") ModelTO modelTO){ >>> log.debug(location); >>> log.debug(modelTO); >>> .... >>> } >>> } >>> >>> Router Definition: >>> >>> <route> >>> <from uri="cxfrs:bean:serviceRouter" /> >>> <process ref="testProcessor" /> >>> <to uri="cxfrs:bean:serviceEndpoint?httpClientAPI=false" /> >>> </route> >>> >>> I tried to use a test processor to capture the exchange and the >>> inMessage. >>> The 2 parameters are correct. with values: >>> >>> location: "String"; >>> ModelTO: firstName="FirstName", lastName="LastName" >>> >>> But after it routes through the endpoint, the 2 parameters are getting >>> null >>> values: >>> >>> location: null; >>> ModelTO: firstname=null, lastName=null. >>> >>> >>> I have checked the camel-cxf code and enabled the Trace logging. I might >>> need additional logs in the invokeProxyClient method of the >>> CxfRsProducer to >>> see where the inMessage.getBody() values gets converted or loss >>> >>> >>> >>> >>> >> >> >> > > -- View this message in context: http://old.nabble.com/Null-parameters-when-routing-CXFRS-endpoints-tp28186748p28189696.html Sent from the Camel - Users mailing list archive at Nabble.com.