Trying to upgrade to jersey-server 1.8, jersey-guice 1.8, guice-3.0,
guice-assistedinject-3.0, jetty-webapp-7.4.5-something,
jersey-core-1.8, and I'm having an issue with assisted injection that
I have not seen before.
My root resource contains this:
@Path("dblog")
public DbLogSubResource getDbLog(@InjectParam
DbLogSubResource.Factory provider)
{
/* stuff deleted */
return provider.create(bds, 1234);
}
this uses the assisted injection framework, so DbLogSubResource looks like:
@RequestScoped
public class DbLogSubResource {
public interface Factory {
public DbLogSubResource create(DataSource ds, int platformId);
}
@Inject
public DbLogSubResource(DbLoggerStatistics stats, @Assisted
DataSource ds, @Assisted int platformId) {
this.ds = ds;
this.stats = stats;
this.platformId = platformId;
}
}
If you haven't used assisted injection before I know that looks a
little wacky but trust me, it all worked great with the combination of
jersey-1.6 and guice-3.0 ... which is why I'm wondering: is there some
reason it wouldn't work with jersey 1.8, or is it actually a problem
with jetty (was using grizzly in the last project)?
Here is the wacky NPE that I am getting. Note that to get this to go
away, all I have to do is comment out the root resource method (the
one with the @InjectParam in it).
--C
20:47:39.739 WARN org.eclipse.jetty.util.log - Failed startup of
context o.e.j.w.WebAppContext{/,file:/home/chrisp/work/ocb/server/trunk/}
java.lang.NullPointerException: null
at com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory.isGuiceFieldOrMethodInjected(GuiceComponentProviderFactory.java:241)
~[jersey-guice-1.8.jar:1.8]
at com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory.isGuiceFieldOrMethodInjected(GuiceComponentProviderFactory.java:254)
~[jersey-guice-1.8.jar:1.8]
at com.sun.jersey.guice.spi.container.GuiceComponentProviderFactory.getComponentProvider(GuiceComponentProviderFactory.java:150)
~[jersey-guice-1.8.jar:1.8]
at com.sun.jersey.server.impl.component.IoCResourceFactory.getComponentProvider(IoCResourceFactory.java:76)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl.getResourceComponentProvider(WebApplicationImpl.java:580)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl.getResourceComponentProvider(WebApplicationImpl.java:615)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl$19.getInjectable(WebApplicationImpl.java:1033)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl$19.getInjectable(WebApplicationImpl.java:1022)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.core.spi.factory.InjectableProviderFactory.getInjectable(InjectableProviderFactory.java:214)
~[jersey-core-1.8.jar:1.8]
at com.sun.jersey.core.spi.factory.InjectableProviderFactory.getInjectableWithScope(InjectableProviderFactory.java:245)
~[jersey-core-1.8.jar:1.8]
at com.sun.jersey.server.impl.inject.ServerInjectableProviderFactory.getInjectableiWithScope(ServerInjectableProviderFactory.java:90)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.inject.ServerInjectableProviderFactory.getInjectable(ServerInjectableProviderFactory.java:116)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.inject.ServerInjectableProviderFactory.getInjectable(ServerInjectableProviderFactory.java:131)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.model.ResourceUriRules.processSubResourceLocators(ResourceUriRules.java:228)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.model.ResourceUriRules.<init>(ResourceUriRules.java:137)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl.newResourceUriRules(WebApplicationImpl.java:709)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl.access$600(WebApplicationImpl.java:169)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl$9.f(WebApplicationImpl.java:553)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl$9.f(WebApplicationImpl.java:550)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
~[jersey-core-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl.getUriRules(WebApplicationImpl.java:550)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiateResource(WebApplicationImpl.java:657)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiateResource(WebApplicationImpl.java:653)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.RootResourceUriRules.<init>(RootResourceUriRules.java:124)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1298)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:169)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:775)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:771)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
~[jersey-core-1.8.jar:1.8]
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:771)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.guice.spi.container.servlet.GuiceContainer.initiate(GuiceContainer.java:121)
~[jersey-guice-1.8.jar:1.8]
at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:318)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:609)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373)
~[jersey-server-1.8.jar:1.8]
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556)
~[jersey-server-1.8.jar:1.8]
at javax.servlet.GenericServlet.init(GenericServlet.java:241)
~[servlet-api-2.5.jar:2.5]
at com.google.inject.servlet.ServletDefinition.init(ServletDefinition.java:117)
~[guice-servlet-3.0.jar:na]
at com.google.inject.servlet.ManagedServletPipeline.init(ManagedServletPipeline.java:82)
~[guice-servlet-3.0.jar:na]
at com.google.inject.servlet.ManagedFilterPipeline.initPipeline(ManagedFilterPipeline.java:102)
~[guice-servlet-3.0.jar:na]
at com.google.inject.servlet.GuiceFilter.init(GuiceFilter.java:172)
~[guice-servlet-3.0.jar:na]
at org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:99)
~[jetty-servlet-7.4.5.v20110725.jar:7.4.5.v20110725]
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
[jetty-util-7.4.5.v20110725.jar:7.4.5.v20110725]
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:742)
~[jetty-servlet-7.4.5.v20110725.jar:7.4.5.v20110725]
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:245)
~[jetty-servlet-7.4.5.v20110725.jar:7.4.5.v20110725]
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1208)
~[jetty-webapp-7.4.5.v20110725.jar:7.4.5.v20110725]
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:586)
~[jetty-server-7.4.5.v20110725.jar:7.4.5.v20110725]
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:449)
~[jetty-webapp-7.4.5.v20110725.jar:7.4.5.v20110725]
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
[jetty-util-7.4.5.v20110725.jar:7.4.5.v20110725]
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:89)
[jetty-server-7.4.5.v20110725.jar:7.4.5.v20110725]
at org.eclipse.jetty.server.Server.doStart(Server.java:258)
[jetty-server-7.4.5.v20110725.jar:7.4.5.v20110725]
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:58)
[jetty-util-7.4.5.v20110725.jar:7.4.5.v20110725]
at com.autofrog.ocb.OcbServer.run(OcbServer.java:58) [classes/:na]
at com.autofrog.ocb.OcbServer.main(OcbServer.java:65) [classes/:na]