Hi Sergey,
Thanks for your reply. I think i have put up my question wrongly.

Following Camel route is working perfectly fine.
*        <route id="RestRoute">
                <from
uri="http://localhost:8080/cxf-rest-example/myservice/users"; />  
         <to uri="bean:myBean?method=myMethod"/>
        </route>*

The Camel route that is not working is as follows

*        <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>     
                 
        <route id="RestRoute">
                <from uri="stream:in?promptMessage=Enter Something:"/>  
               <from uri="cxfrs://bean://rsServer"/>    
                <to uri="cxfrs://bean://rsClient"/>
                <setHeader headerName="CamelCxfRsUsingHttpAPI">
            <constant>false</constant>
        </setHeader>
         <to uri="bean:myBean?method=myMethod"/>
        </route>
        </camel:camelContext>
*



I want to know, *how can I consume web services using <cxf:rsServer> and 
<cxf:rsClient>*

author="Sergey Beryozkin-3">
Hi

This issue looks similar to the one reported recently, but in this case 
it is quite obvious that CXF JAX-RS runtime gets the wrong portion of 
the Request URI, specifically, the root resource can match 
"myservice/users" but what it gets is 
"cxf-rest-example/myservice/users", which also includes a 'context', 
"cxf-rest-example" - as far as I recall it is not an issue when using 
Camel Servlet..., I guess in this setup the component does not really 
know which portion of the request URI constitutes a context

Can you do

<from uri="http://localhost:8080/myservice/users"; />

This will probably 'fix' it, or have

<from uri="http://localhost:8080/example/myservice/users"; />

@Path("/example/myservice/")
@Produces("application/xml")
public class ServiceImpl implements ServiceDefn

HTH, Sergey

On 18/04/13 14:52, abhi wrote:
> Hi,
> I have written CXF REST web service which I am calling through my camel
> route as follows
>
> /     
>       <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>      
>       <route id="RestRoute">
>               <from 
> uri="http://localhost:8080/cxf-rest-example/myservice/users"; />
>           <to uri="bean:myBean?method=myMethod"/>
>       </route>
>      </camel:camelContext>/
>       
> these are 2 different projects
> cxf-rest-example - for CXF web service
> Camel-First - Project for camel       
>       
> My code look as below
>
>       
> *serviceimpl.java*
>
>       
>       package service;
>
> import java.util.HashMap;
> import java.util.Map;
>
> import javax.ws.rs.GET;
> import javax.ws.rs.Path;
> import javax.ws.rs.PathParam;
> import javax.ws.rs.Produces;
> import javax.ws.rs.core.Response;
> import javax.ws.rs.core.Response.Status;
>
> import pojo.User;
> import pojo.UserCollection;
>       
>       @Path("/myservice/")
>       @Produces("application/xml")
>       public class ServiceImpl implements ServiceDefn {
>
>      private static Map&lt;Integer, User&gt;  users = new
> HashMap&lt;Integer, User&gt;();
>
>      static {
>          users.put(1, new User(1, "foo"));
>          users.put(2, new User(2, "bar"));
>          users.put(3, new User(3, "baz"));
>      }
>
>      public ServiceImpl() {
>      }
>
>      @GET
>      @Path("/users")
>      @Override
>      public UserCollection getUsers() {
>          return new UserCollection(users.values());
>      }
>
>       
> Above route is succesfully calling my web service.
>
> But when I am trying to call it using following route, my web service is
> not
> getting called. Can anybody tell what can be issue.
>
>       <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>
>       <route id="RestRoute">
>               <from uri="stream:in?promptMessage=Enter Something:"/>
>               <from uri="cxfrs://bean://rsServer"/>   
>               <to uri="cxfrs://bean://rsClient"/>
>               <setHeader headerName="CamelCxfRsUsingHttpAPI">
>              <constant>false</constant>
>          </setHeader>
>           <to uri="bean:myBean?method=myMethod"/>
>       </route>
>       </camel:camelContext>
>       
>       <bean id="myBean" class="org.test.MyBean" />
>       
>       <cxf:rsServer id="rsServer"
> address="http://localhost:8080/cxf-rest-example/myservice/users";
>                serviceClass="service.ServiceImpl"/>
>
>       <cxf:rsClient id="rsClient"
> address="http://localhost:8080/cxf-rest-example/myservice/users";
>                serviceClass="service.ServiceImpl"/>
>               
>               
> When I ran above route i get following logs :
>
> Apr 18, 2013 7:09:50 PM org.apache.cxf.endpoint.ServerImpl initDestination
> INFO: Setting the server's publish address to be
> http://localhost:8080/cxf-rest-example/myservice/users
> 2013-04-18 19:09:50.956:INFO:oejs.Server:jetty-7.5.4.v20111024
> 2013-04-18 19:09:50.985:INFO:oejs.AbstractConnector:Started
> SelectChannelConnector@localhost:8080 STARTING
> 2013-04-18 19:09:51.056:INFO:oejsh.ContextHandler:started
> o.e.j.s.h.ContextHandler{/cxf-rest-example/myservice,null}
> Enter Something:abc
> Apr 18, 2013 7:09:56 PM
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor
> processRequest
> WARNING: No root resource matching request path
> /cxf-rest-example/myservice/users has been found, Relative Path: /. Please
> enable FINE/TRACE log level for more details.
> Enter Something:xxxx
> Apr 18, 2013 7:10:03 PM
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor
> processRequest
> WARNING: No root resource matching request path
> /cxf-rest-example/myservice/users has been found, Relative Path: /. Please
> enable FINE/TRACE log level for more details.
> Enter Something:
>
>
> Thanks,
> Abhi
>
>
>
> --
> View this message in context:
> http://camel.465427.n5.nabble.com/Issue-in-Calling-REST-web-service-through-Camel-tp5731079.html
> Sent from the Camel - Users mailing list archive at Nabble.com.


Sergey Beryozkin-3 wrote
> Hi
> 
> This issue looks similar to the one reported recently, but in this case 
> it is quite obvious that CXF JAX-RS runtime gets the wrong portion of 
> the Request URI, specifically, the root resource can match 
> "myservice/users" but what it gets is 
> "cxf-rest-example/myservice/users", which also includes a 'context', 
> "cxf-rest-example" - as far as I recall it is not an issue when using 
> Camel Servlet..., I guess in this setup the component does not really 
> know which portion of the request URI constitutes a context
> 
> Can you do
> <from uri="http://localhost:8080/myservice/users"; />
> This will probably 'fix' it, or have
> <from uri="http://localhost:8080/example/myservice/users"; />
> @Path("/example/myservice/")
> @Produces("application/xml")
> public class ServiceImpl implements ServiceDefn
> 
> HTH, Sergey
> 
> On 18/04/13 14:52, abhi wrote:
>> Hi,
>> I have written CXF REST web service which I am calling through my camel
>> route as follows
>>
>> /    
>>       
> <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>
>       
>>      
> <route id="RestRoute">
>>              
> <from uri="http://localhost:8080/cxf-rest-example/myservice/users"; />
>>           
> <to uri="bean:myBean?method=myMethod"/>
>>      
> </route>
>>      
> </camel:camelContext>
> /
>>      
>> these are 2 different projects
>> cxf-rest-example - for CXF web service
>> Camel-First - Project for camel      
>>      
>> My code look as below
>>
>>      
>> *serviceimpl.java*
>>
>>      
>>      package service;
>>
>> import java.util.HashMap;
>> import java.util.Map;
>>
>> import javax.ws.rs.GET;
>> import javax.ws.rs.Path;
>> import javax.ws.rs.PathParam;
>> import javax.ws.rs.Produces;
>> import javax.ws.rs.core.Response;
>> import javax.ws.rs.core.Response.Status;
>>
>> import pojo.User;
>> import pojo.UserCollection;
>>      
>>      @Path("/myservice/")
>>      @Produces("application/xml")
>>      public class ServiceImpl implements ServiceDefn {
>>
>>      private static Map&lt;Integer, User&gt;  users = new
>> HashMap&lt;Integer, User&gt;();
>>
>>      static {
>>          users.put(1, new User(1, "foo"));
>>          users.put(2, new User(2, "bar"));
>>          users.put(3, new User(3, "baz"));
>>      }
>>
>>      public ServiceImpl() {
>>      }
>>
>>      @GET
>>      @Path("/users")
>>      @Override
>>      public UserCollection getUsers() {
>>          return new UserCollection(users.values());
>>      }
>>
>>      
>> Above route is succesfully calling my web service.
>>
>> But when I am trying to call it using following route, my web service is
>> not
>> getting called. Can anybody tell what can be issue.
>>
>>      
> <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>
>>      
> <route id="RestRoute">
>>              
> <from uri="stream:in?promptMessage=Enter Something:"/>
>>              
> <from uri="cxfrs://bean://rsServer"/>
>       
>>              
> <to uri="cxfrs://bean://rsClient"/>
>>              
> <setHeader headerName="CamelCxfRsUsingHttpAPI">
>>              
> <constant>
> false
> </constant>
>>          
> </setHeader>
>>           
> <to uri="bean:myBean?method=myMethod"/>
>>      
> </route>
>>      
> </camel:camelContext>
>>      
>>      
> <bean id="myBean" class="org.test.MyBean" />
>>      
>>      
> <cxf:rsServer id="rsServer"
>>
>  address="http://localhost:8080/cxf-rest-example/myservice/users";
>>                serviceClass="service.ServiceImpl"/>
>>
>>      
> <cxf:rsClient id="rsClient"
>>
>  address="http://localhost:8080/cxf-rest-example/myservice/users";
>>                serviceClass="service.ServiceImpl"/>
>>              
>>              
>> When I ran above route i get following logs :
>>
>> Apr 18, 2013 7:09:50 PM org.apache.cxf.endpoint.ServerImpl
>> initDestination
>> INFO: Setting the server's publish address to be
>> http://localhost:8080/cxf-rest-example/myservice/users
>> 2013-04-18 19:09:50.956:INFO:oejs.Server:jetty-7.5.4.v20111024
>> 2013-04-18 19:09:50.985:INFO:oejs.AbstractConnector:Started
>> SelectChannelConnector@localhost:8080 STARTING
>> 2013-04-18 19:09:51.056:INFO:oejsh.ContextHandler:started
>> o.e.j.s.h.ContextHandler{/cxf-rest-example/myservice,null}
>> Enter Something:abc
>> Apr 18, 2013 7:09:56 PM
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor
>> processRequest
>> WARNING: No root resource matching request path
>> /cxf-rest-example/myservice/users has been found, Relative Path: /.
>> Please
>> enable FINE/TRACE log level for more details.
>> Enter Something:xxxx
>> Apr 18, 2013 7:10:03 PM
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor
>> processRequest
>> WARNING: No root resource matching request path
>> /cxf-rest-example/myservice/users has been found, Relative Path: /.
>> Please
>> enable FINE/TRACE log level for more details.
>> Enter Something:
>>
>>
>> Thanks,
>> Abhi
>>
>>
>>
>> --
>> View this message in context:
>> http://camel.465427.n5.nabble.com/Issue-in-Calling-REST-web-service-through-Camel-tp5731079.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.


Sergey Beryozkin-3 wrote
> Hi
> 
> This issue looks similar to the one reported recently, but in this case 
> it is quite obvious that CXF JAX-RS runtime gets the wrong portion of 
> the Request URI, specifically, the root resource can match 
> "myservice/users" but what it gets is 
> "cxf-rest-example/myservice/users", which also includes a 'context', 
> "cxf-rest-example" - as far as I recall it is not an issue when using 
> Camel Servlet..., I guess in this setup the component does not really 
> know which portion of the request URI constitutes a context
> 
> Can you do
> <from uri="http://localhost:8080/myservice/users"; />
> This will probably 'fix' it, or have
> <from uri="http://localhost:8080/example/myservice/users"; />
> @Path("/example/myservice/")
> @Produces("application/xml")
> public class ServiceImpl implements ServiceDefn
> 
> HTH, Sergey
> 
> On 18/04/13 14:52, abhi wrote:
>> Hi,
>> I have written CXF REST web service which I am calling through my camel
>> route as follows
>>
>> /    
>>       
> <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>
>       
>>      
> <route id="RestRoute">
>>              
> <from uri="http://localhost:8080/cxf-rest-example/myservice/users"; />
>>           
> <to uri="bean:myBean?method=myMethod"/>
>>      
> </route>
>>      
> </camel:camelContext>
> /
>>      
>> these are 2 different projects
>> cxf-rest-example - for CXF web service
>> Camel-First - Project for camel      
>>      
>> My code look as below
>>
>>      
>> *serviceimpl.java*
>>
>>      
>>      package service;
>>
>> import java.util.HashMap;
>> import java.util.Map;
>>
>> import javax.ws.rs.GET;
>> import javax.ws.rs.Path;
>> import javax.ws.rs.PathParam;
>> import javax.ws.rs.Produces;
>> import javax.ws.rs.core.Response;
>> import javax.ws.rs.core.Response.Status;
>>
>> import pojo.User;
>> import pojo.UserCollection;
>>      
>>      @Path("/myservice/")
>>      @Produces("application/xml")
>>      public class ServiceImpl implements ServiceDefn {
>>
>>      private static Map&lt;Integer, User&gt;  users = new
>> HashMap&lt;Integer, User&gt;();
>>
>>      static {
>>          users.put(1, new User(1, "foo"));
>>          users.put(2, new User(2, "bar"));
>>          users.put(3, new User(3, "baz"));
>>      }
>>
>>      public ServiceImpl() {
>>      }
>>
>>      @GET
>>      @Path("/users")
>>      @Override
>>      public UserCollection getUsers() {
>>          return new UserCollection(users.values());
>>      }
>>
>>      
>> Above route is succesfully calling my web service.
>>
>> But when I am trying to call it using following route, my web service is
>> not
>> getting called. Can anybody tell what can be issue.
>>
>>      
> <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>
>>      
> <route id="RestRoute">
>>              
> <from uri="stream:in?promptMessage=Enter Something:"/>
>>              
> <from uri="cxfrs://bean://rsServer"/>
>       
>>              
> <to uri="cxfrs://bean://rsClient"/>
>>              
> <setHeader headerName="CamelCxfRsUsingHttpAPI">
>>              
> <constant>
> false
> </constant>
>>          
> </setHeader>
>>           
> <to uri="bean:myBean?method=myMethod"/>
>>      
> </route>
>>      
> </camel:camelContext>
>>      
>>      
> <bean id="myBean" class="org.test.MyBean" />
>>      
>>      
> <cxf:rsServer id="rsServer"
>>
>  address="http://localhost:8080/cxf-rest-example/myservice/users";
>>                serviceClass="service.ServiceImpl"/>
>>
>>      
> <cxf:rsClient id="rsClient"
>>
>  address="http://localhost:8080/cxf-rest-example/myservice/users";
>>                serviceClass="service.ServiceImpl"/>
>>              
>>              
>> When I ran above route i get following logs :
>>
>> Apr 18, 2013 7:09:50 PM org.apache.cxf.endpoint.ServerImpl
>> initDestination
>> INFO: Setting the server's publish address to be
>> http://localhost:8080/cxf-rest-example/myservice/users
>> 2013-04-18 19:09:50.956:INFO:oejs.Server:jetty-7.5.4.v20111024
>> 2013-04-18 19:09:50.985:INFO:oejs.AbstractConnector:Started
>> SelectChannelConnector@localhost:8080 STARTING
>> 2013-04-18 19:09:51.056:INFO:oejsh.ContextHandler:started
>> o.e.j.s.h.ContextHandler{/cxf-rest-example/myservice,null}
>> Enter Something:abc
>> Apr 18, 2013 7:09:56 PM
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor
>> processRequest
>> WARNING: No root resource matching request path
>> /cxf-rest-example/myservice/users has been found, Relative Path: /.
>> Please
>> enable FINE/TRACE log level for more details.
>> Enter Something:xxxx
>> Apr 18, 2013 7:10:03 PM
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor
>> processRequest
>> WARNING: No root resource matching request path
>> /cxf-rest-example/myservice/users has been found, Relative Path: /.
>> Please
>> enable FINE/TRACE log level for more details.
>> Enter Something:
>>
>>
>> Thanks,
>> Abhi
>>
>>
>>
>> --
>> View this message in context:
>> http://camel.465427.n5.nabble.com/Issue-in-Calling-REST-web-service-through-Camel-tp5731079.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.


Sergey Beryozkin-3 wrote
> Hi
> 
> This issue looks similar to the one reported recently, but in this case 
> it is quite obvious that CXF JAX-RS runtime gets the wrong portion of 
> the Request URI, specifically, the root resource can match 
> "myservice/users" but what it gets is 
> "cxf-rest-example/myservice/users", which also includes a 'context', 
> "cxf-rest-example" - as far as I recall it is not an issue when using 
> Camel Servlet..., I guess in this setup the component does not really 
> know which portion of the request URI constitutes a context
> 
> Can you do
> <from uri="http://localhost:8080/myservice/users"; />
> This will probably 'fix' it, or have
> <from uri="http://localhost:8080/example/myservice/users"; />
> @Path("/example/myservice/")
> @Produces("application/xml")
> public class ServiceImpl implements ServiceDefn
> 
> HTH, Sergey
> 
> On 18/04/13 14:52, abhi wrote:
>> Hi,
>> I have written CXF REST web service which I am calling through my camel
>> route as follows
>>
>> /    
>>       
> <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>
>       
>>      
> <route id="RestRoute">
>>              
> <from uri="http://localhost:8080/cxf-rest-example/myservice/users"; />
>>           
> <to uri="bean:myBean?method=myMethod"/>
>>      
> </route>
>>      
> </camel:camelContext>
> /
>>      
>> these are 2 different projects
>> cxf-rest-example - for CXF web service
>> Camel-First - Project for camel      
>>      
>> My code look as below
>>
>>      
>> *serviceimpl.java*
>>
>>      
>>      package service;
>>
>> import java.util.HashMap;
>> import java.util.Map;
>>
>> import javax.ws.rs.GET;
>> import javax.ws.rs.Path;
>> import javax.ws.rs.PathParam;
>> import javax.ws.rs.Produces;
>> import javax.ws.rs.core.Response;
>> import javax.ws.rs.core.Response.Status;
>>
>> import pojo.User;
>> import pojo.UserCollection;
>>      
>>      @Path("/myservice/")
>>      @Produces("application/xml")
>>      public class ServiceImpl implements ServiceDefn {
>>
>>      private static Map&lt;Integer, User&gt;  users = new
>> HashMap&lt;Integer, User&gt;();
>>
>>      static {
>>          users.put(1, new User(1, "foo"));
>>          users.put(2, new User(2, "bar"));
>>          users.put(3, new User(3, "baz"));
>>      }
>>
>>      public ServiceImpl() {
>>      }
>>
>>      @GET
>>      @Path("/users")
>>      @Override
>>      public UserCollection getUsers() {
>>          return new UserCollection(users.values());
>>      }
>>
>>      
>> Above route is succesfully calling my web service.
>>
>> But when I am trying to call it using following route, my web service is
>> not
>> getting called. Can anybody tell what can be issue.
>>
>>      
> <camel:camelContext xmlns="http://camel.apache.org/schema/spring";>
>>      
> <route id="RestRoute">
>>              
> <from uri="stream:in?promptMessage=Enter Something:"/>
>>              
> <from uri="cxfrs://bean://rsServer"/>
>       
>>              
> <to uri="cxfrs://bean://rsClient"/>
>>              
> <setHeader headerName="CamelCxfRsUsingHttpAPI">
>>              
> <constant>
> false
> </constant>
>>          
> </setHeader>
>>           
> <to uri="bean:myBean?method=myMethod"/>
>>      
> </route>
>>      
> </camel:camelContext>
>>      
>>      
> <bean id="myBean" class="org.test.MyBean" />
>>      
>>      
> <cxf:rsServer id="rsServer"
>>
>  address="http://localhost:8080/cxf-rest-example/myservice/users";
>>                serviceClass="service.ServiceImpl"/>
>>
>>      
> <cxf:rsClient id="rsClient"
>>
>  address="http://localhost:8080/cxf-rest-example/myservice/users";
>>                serviceClass="service.ServiceImpl"/>
>>              
>>              
>> When I ran above route i get following logs :
>>
>> Apr 18, 2013 7:09:50 PM org.apache.cxf.endpoint.ServerImpl
>> initDestination
>> INFO: Setting the server's publish address to be
>> http://localhost:8080/cxf-rest-example/myservice/users
>> 2013-04-18 19:09:50.956:INFO:oejs.Server:jetty-7.5.4.v20111024
>> 2013-04-18 19:09:50.985:INFO:oejs.AbstractConnector:Started
>> SelectChannelConnector@localhost:8080 STARTING
>> 2013-04-18 19:09:51.056:INFO:oejsh.ContextHandler:started
>> o.e.j.s.h.ContextHandler{/cxf-rest-example/myservice,null}
>> Enter Something:abc
>> Apr 18, 2013 7:09:56 PM
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor
>> processRequest
>> WARNING: No root resource matching request path
>> /cxf-rest-example/myservice/users has been found, Relative Path: /.
>> Please
>> enable FINE/TRACE log level for more details.
>> Enter Something:xxxx
>> Apr 18, 2013 7:10:03 PM
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor
>> processRequest
>> WARNING: No root resource matching request path
>> /cxf-rest-example/myservice/users has been found, Relative Path: /.
>> Please
>> enable FINE/TRACE log level for more details.
>> Enter Something:
>>
>>
>> Thanks,
>> Abhi
>>
>>
>>
>> --
>> View this message in context:
>> http://camel.465427.n5.nabble.com/Issue-in-Calling-REST-web-service-through-Camel-tp5731079.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.





--
View this message in context: 
http://camel.465427.n5.nabble.com/Issue-in-Calling-REST-web-service-through-Camel-tp5731079p5731120.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply via email to