Hi Martin,
If you want to get an instance of a resource class inject the
com.sun.jersey.api.coreResourceContext class:
@Context ResourceContext rc;
and do:
Book b = rc.getResource(Book.class)
Under the covers Jersey will use a registered ComponentProvider and
ensure the correct life-cycle of the resource is used.
Paul.
Martin Probst wrote:
> Hi Paul,
>
> thanks for your help. I'm still running into an issue though. I need
> access to a ComponentProvider from within my resource classes, to
> instantiate new resources. I.e., I have something like this:
>
> class Books {
> @Inject ComponentProvider provider;
> @POST
> create(Form props) {
> provider.getInstance(Book.class);
> }
> }
>
> Because of the chicken-and-egg problem with the component provider, my
> servlet setup looks like this:
>
> @Override
> protected void initiate(ResourceConfig rc, WebApplication wa) {
> rc.getProviderInstances().add(new
> ContextComponentProvider(ComponentProvider.class));
> wa.initiate(rc);
> this.provider = wa.getComponentProvider();
> }
>
> And ContextComponentProvider basically injects by returning the local
> instance of the component provider. So this looks as if it should work,
> but it doesn't :-(
>
> javax.servlet.ServletException:
> com.sun.jersey.api.container.ContainerException: Could not get instance
> from component provider for type interface
> com.sun.jersey.spi.service.ComponentProvider
> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:311)
> de.hpi_web.wsminer.Servlet.service(Servlet.java:89)
> javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> root cause
> com.sun.jersey.api.container.ContainerException: Could not get instance
> from component provider for type interface
> com.sun.jersey.spi.service.ComponentProvider
> [...]
> root cause
>
> java.lang.InstantiationException:
> com.sun.jersey.spi.service.ComponentProvider
> java.lang.Class.newInstance0(Class.java:335)
> java.lang.Class.newInstance(Class.java:303)
> [...]
> Any ideas? How am I supposed to instantiate new resource from within
> another resource?
> Regards,
> Martin
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>
--
| ? + ? = To question
----------------\
Paul Sandoz
x38109
+33-4-76188109