Hi Sergey, thx for your help!
if i understood you correctly, then something like: <camel-cxf:rsServer id="endpoint1" address="/resource1" loggingFeatureEnabled="true" loggingSizeLimit="20" serviceClass="net.code-poets.camel.endpoint.v01.ResourceEndpoint1"> </camel-cxf:rsServer> <camel-cxf:rsServer id="endpoint2" address="/resource2" loggingFeatureEnabled="true" loggingSizeLimit="20" serviceClass="net.code-poets..camel.endpoint.v01.ResourceEndpoint2"> </camel-cxf:rsServer> should work, but when i changed the resource definitions of each resource to Path("/"), i got following trace: [INFO] [talledLocalContainer] 11.09.2012 13:46:34 org.apache.cxf.jaxrs.utils.JAXRSUtils findTargetMethod [INFO] [talledLocalContainer] 11/09/2012 11:46:34 WARN (CustomProvider.java:208) toResponse - javax.ws.rs.WebApplicationException [INFO] [talledLocalContainer] javax.ws.rs.WebApplicationException: null [INFO] [talledLocalContainer] at org.apache.cxf.jaxrs.utils.JAXRSUtils.findTargetMethod(JAXRSUtils.java:415) ~[cxf-bundle-jaxrs-2.5.1.jar:2.5.1] [INFO] [talledLocalContainer] at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:212) ~[cxf-bundle-jaxrs-2.5.1.jar:2.5.1] [INFO] [talledLocalContainer] at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:89) ~[cxf-bundle-jaxrs-2.5.1.jar:2.5.1] ... from an URI perspective it should be no problem to distingush between the different resource: GET ../rest/resource1/{id} -> endpoint1/ GET ../rest/resource2/{id} -> endpoint2 or do i miss something? TIA, tim 2012/9/11 Sergey Beryozkin <sberyoz...@gmail.com>: > Hi > > Perhaps the following can help > On 11/09/12 11:52, Tim Emrich wrote: >> >> hello, >> >> i try to expose 2 or more resources using the cxfrs component (camel >> 2.10.1). >> One is working fine, but i don't find a proper solution to expose more >> then one. >> >> i tried several approaches but none of them worked as expected (at >> least what i expect ;-)): >> >> 1) one rsServer with many serviceBeans >> in the route i use something like >> >> "cxfrs:bean:rsServer?resourceClass=net.code-poets.camel.endpoint.v01.ResourceEndpoint1"; >> -> all requests are routed to just one endpoint >> >> 2) many rsServer instances with one serviceClass each >> - using the same address "/" attribute for all rsServer instances does >> not work (the exposed resources have their own root @Path defined, >> (e.g. Path("/resource1")) >> - using the "/resource1" as address string in the rsServer and >> removing it from the Resource definition does not work >> + using the "/resource1" as address string and leaving it in the >> @Path("/resource1") public interface Resource1... >> does work, but leads to an URL like .../resource1/resource1... >> >> i'd like to know if i have a conceptional problem? >> can someone pls provide me with a fragment how it should look like to >> use many resources, where each of the resource have their own route >> definition. > > > I believe the 2nd approach works, according to > http://camel.465427.n5.nabble.com/Apache-Camel-CXFRS-Server-Need-advice-for-Routing-td5699287.html > > Every endpoint or individual service beans within a single endpoint should > have unique Path values, otherwise, as in JAX-RS 1.1, the first matching > resource gets selected. The case of multiple resources having the same > top-level Path is handled better in JAX-RS 2.0 but in meantime top level > Path values have to be unique. > > The other possible workarounds: > - use a single root resource but introduce and delegate to subresource > locators > - use CXF specific comparator to resolve the ambiguous cases: > http://cxf.apache.org/docs/jax-rs-basics.html#JAX-RSBasics-Customselectionbetweenmultipleresources > - consider using CXF jaxrs:endpoint directly, and using Camel transport to > delegate to it > > HTH, Sergey > >> >> thx in advance, >> tim > > > > -- > Sergey Beryozkin > > Talend Community Coders > http://coders.talend.com/ > > Blog: http://sberyozkin.blogspot.com