Have my own little conversation going here now ;)   So looking deeper at
that other post, apparently you need to have a unique root path name for
each service class for the matching to work right now.  Kind of a bummer
that you can't have multiple classes with / for a root path and just have
CXF search all / path classes for particular sub-resource locators. But at
least I know how to get around the issue there.

On Wed, Apr 15, 2009 at 4:51 PM, David Castro <[email protected]>wrote:

> Interesting, I found a similar problem on the lists just now, but no
> resolution...
>
> http://www.mail-archive.com/[email protected]/msg03977.html
>
>
> On Wed, Apr 15, 2009 at 4:31 PM, David Castro <[email protected]>wrote:
>
>> I am having an issue mapping multiple service beans. Only the first bean's
>> paths seem to be mapped at all.  So something like this would not work for
>> me, because only authenticate service methods would be available:
>>
>>   <jaxrs:server id="serviceServer" address="/">
>>     <jaxrs:serviceBeans>
>>       <ref bean="authServiceImpl" />
>>       <ref bean="contactServiceImpl" />
>>     </jaxrs:serviceBeans>
>>
>> *Here are the service interfaces:*
>>
>> public interface AuthenticationService {
>>     @GET
>>     @Path("/authenticate/{uid}:{pass}")
>>     public Response authenticate(@PathParam("uid") String username,
>> @PathParam("pass") String password);
>> }
>>
>> public interface ContactService {
>>     @GET
>>     @Path("/contacts")
>>     public Contacts getContacts();
>> }
>>
>> I can't find a solution to this other than creating an uber service
>> interface that extended all the other interfaces...or potentially creating
>> new jaxrs:server entries for each and every service.  Thoughts, suggestions?
>>
>> Not sure if it is related, but also ran into a similar problem, where when
>> I have two service interfaces like below...where service A and B both have a
>> common sub-path.  It seems that both /v3/authenticate and /v4/authenticate
>> are available.  However, /v4/authenticate/validate is not available.  No
>> sub-path for a method is available in v4 if v3 doesn't have the same path.
>> If I remove the v3 bean, then both v4 methods are available.
>>
>> *Take the following from cxf_beans.xml where I define 2 service beans:*
>>
>>   <jaxrs:server id="serviceServer" address="/">
>>     <jaxrs:serviceBeans>
>>       <ref bean="contactServiceImpl3" />
>>       <ref bean="contactServiceImpl4" />
>>     </jaxrs:serviceBeans>
>>
>> *Here are the service interfaces:*
>>
>> =====
>>
>> @Path("/v3")
>> public interface AuthenticationService {
>>     @GET
>>     @Path("/authenticate/{uid}:{pass}")
>>     public Response authenticate(@PathParam("uid") String username,
>> @PathParam("pass") String password);
>> }
>>
>> =====
>>
>> @Path("/v4")
>> public interface AuthenticationService {
>>     @GET
>>     @Path("/authenticate/{uid}:{pass}")
>>     public Response authenticate(@PathParam("uid") String username,
>> @PathParam("pass") String password);
>>
>>     @GET
>>     @Path("/authenticate/validate/{token}")
>>     public Response validate(@PathParam("token") String token);
>> }
>>
>> =====
>>
>>
>> *The error in the logs:*
>>
>> 2009-04-15 22:39:51,028 ERROR [STDERR] Apr 15, 2009 10:39:51 PM
>> org.apache.cxf.jaxrs.utils.JAXRSUtils findTargetMethod
>> WARNING: .No operation matching request path
>> /authenticate/validate/BTaaZUycRa is found, ContentType : */*, Accept :
>> application/xml
>>
>
>

Reply via email to