Hi Mark, you are right, there is room for improvement. You could call it a bug or a feature request ...
best regards Stephan -----Ursprüngliche Nachricht----- Von: "Mark Kharitonov" <[email protected]> Gesendet: 30.11.2011 22:33:28 An: [email protected] Betreff: Integrating a 3rd party Dependency Injection engine with JAX-RS extension. >I am using google guice and wish to integrate it with the JAX-RS extension. On >the surface, everything is simple and clean: > > final JaxRsApplication application = new > JaxRsApplication(component.getContext().createChildContext()); > application.setObjectFactory(new ObjectFactory() { > > @Override > public <T> T getInstance(Class<T> jaxRsClass) throws InstantiateException { > return Injector.getInstance(jaxRsClass); > } > }); > >True, when JAX-RS wishes to create an instance of a resource handler it >consults the object factory first, which is excellent. But, there are certain >validations that JAX-RS performs on the resource handler type and these >validations totally ignore the presence of an object factory. Observer the >following stack trace: > >WrapperUtil.findJaxRsConstructor(Class<?>, String) line: 242 >PerRequestRootResourceClass(RootResourceClass).<init>(Class<?>, >ThreadLocalizedContext, JaxRsProviders, ExtensionBackwardMapping, Logger) >line: 141 >PerRequestRootResourceClass.<init>(Class<?>, ThreadLocalizedContext, >JaxRsProviders, ExtensionBackwardMapping, Logger) line: 82 >ResourceClasses.getPerRequestRootClassWrapper(Class<?>) line: 276 >ResourceClasses.addRootClass(Class<?>) line: 104 >JaxRsRestlet.addClass(Class<?>) line: 283 >JaxRsApplication.add(Application) line: 149 >Program.main(String[]) line: 60 > >What happens is that JAX-RS looks for the public constructors satisfying its >instance creation constraints. In my case, the resource handler class has a >single public non default constructor not annotated with any of the JAX-RS >attributes. Indeed, this constructor is invoked by the dependency injection >engine only (guice in my case) from the object factory. > >I think, that JAX-RS should not fail if it does not find any suitable >constructor and the object factory is registered. Seems like a bug? ___________________________________________________________ SMS schreiben mit WEB.DE FreeMail - einfach, schnell und kostenguenstig. Jetzt gleich testen! http://f.web.de/?mc=021192 ------------------------------------------------------ http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2889682

