Hi Benson
Yes, this a new warning in 3.1.2 as suggested by Romain, to avoid the confusing results when two resource methods are completely equal candidates. In your case below CXF treats the object and the class as two separate resources, it can be that an instance is setting some properties that are not enabled otherwise, etc... This is also done in few cases in TCK tests as far as I recall, so leaving a single setter should do...

Thanks, Sergey




On 27/08/15 15:02, Benson Margulies wrote:
There is one bean with one method named 'runCategorization', but I get
a complaint that it's having trouble making up it's mind, as if I'd
added it twice. The code used from prior versions does add both a
resource class and a service bean for the same thing. Was that always
silly?

3165 [main] WARN  org.apache.cxf.jaxrs.utils.JAXRSUtils  - Both
com.basistech.ws.frontend.service.RaasRsCategorizationService#runCategorization
and 
com.basistech.ws.frontend.service.RaasRsCategorizationService#runCategorization
are equal candidates for handling the current request which

Here is the setup code:

AbstractRaasRsService raasRsService = new RaasRsPingService(); // some
service or another. Why?
raasRsService.setClientFactory(mockedWsBusClientFactory);
raasRsService.setRequestTracker(mockedRequestTracker);
raasRsService.setLanguageofUseIdentifier(mockedLanguageOfUseIdentifier);
serviceBeans.add(0, raasRsService);

JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setServiceBeanObjects(serviceBeans);
sf.setResourceClasses(resourceClasses);
sf.setResourceProviders(resourceProviders);
sf.setProvider(new JacksonJaxbJsonProvider(JsonUtils.getObjectMapper(),
         JacksonJaxbJsonProvider.DEFAULT_ANNOTATIONS));
sf.setProvider(new JsonExceptionMapper());
sf.setProvider(new WebApplicationExceptionMapper());
sf.setProvider(new GenericExceptionMapper());
sf.setAddress(endpointAddress());
server = sf.create();

and then:

protected void addChildService(Class<? extends AbstractRaasRsService>
clazz) throws Exception {
     AbstractRaasRsService childService = clazz.newInstance();
     childService.setClientFactory(mockedWsBusClientFactory);
     childService.setRequestTracker(mockedRequestTracker);
     serviceBeans.add(childService);
     resourceClasses.add(clazz);
     resourceProviders.add(new SingletonResourceProvider(childService, true));
}



--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Reply via email to