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<Integer, User> users = new > HashMap<Integer, User>(); > > 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<Integer, User> users = new >> HashMap<Integer, User>(); >> >> 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<Integer, User> users = new >> HashMap<Integer, User>(); >> >> 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<Integer, User> users = new >> HashMap<Integer, User>(); >> >> 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.