Tomcat 将Guice与Jersey(squarespace)集成:未安装ServiceLocatorGenerator

Tomcat 将Guice与Jersey(squarespace)集成:未安装ServiceLocatorGenerator,tomcat,jersey,guice,squarespace,guice-servlet,Tomcat,Jersey,Guice,Squarespace,Guice Servlet,我正在部署Jersey 2.22应用程序,我正在尝试使用Squarespace Jersey 2 Guice impl库与Guice 4.0顺利集成,以便可以轻松地将Guice依赖项注入控制器 (对于下面的小错误,我深表歉意,我不得不重新键入所有内容。) 但我在启动时遇到以下错误,这是由我的WebListener引起的: SEVERE: Exception starting filter jersey java.lang.IllegalStateException: It appea

我正在部署Jersey 2.22应用程序,我正在尝试使用Squarespace Jersey 2 Guice impl库与Guice 4.0顺利集成,以便可以轻松地将Guice依赖项注入控制器

(对于下面的小错误,我深表歉意,我不得不重新键入所有内容。)

但我在启动时遇到以下错误,这是由我的WebListener引起的:

   SEVERE: Exception starting filter jersey
   java.lang.IllegalStateException: It appears there is no ServiceLocatorGenerator installed.  
     at com.squarespace.jersey2.guice.GuiceServiceLocatorGeneratorStub.create(GuiceServiceLocatortGeneratorStub.java:50)
     at org.glassifsh.hk3.internal.ServiceLocatorFactoryImpl.internalCreate(ServiceLocatorFactoryImpl.java:312)
     at org.glassfish.h2k.internal.ServiceLocatorFactoryimpl.create(ServiceLocatorFactoryImpl.java: 268)
     at org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:138)
     at org.glassfish.internal.inject.Injections.createLocator(Injections.java:123)
     at org.glassfish.jersey.server.ApplicationHandler.<init>(WebComponent.java:392)
     at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
     at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer:415)
     at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
     at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java: 262)
     at ....
@WebListener
public class FakeResourceManager extends GuiceServletContextListener{
      @Override protected Injector getInjector(){
           return Guice.createInjector(new ArrayList<Module>());
      }
}
严重:启动筛选器时出现异常
java.lang.IllegalStateException:似乎没有安装ServiceLocatorGenerator。
位于com.squarespace.jersey2.guice.GuiceServiceLocatorGeneratorStub.create(GuiceServiceLocatorGeneratorStub.java:50)
位于org.glassifsh.hk3.internal.ServiceLocatorFactoryImpl.internalCreate(ServiceLocatorFactoryImpl.java:312)
位于org.glassfish.h2k.internal.ServiceLocatorFactoryimpl.create(ServiceLocatorFactoryimpl.java:268)
位于org.glassfish.jersey.internal.injection.Injections.\u createLocator(Injections.java:138)
位于org.glassfish.internal.injection.Injections.createLocator(Injections.java:123)
位于org.glassfish.jersey.server.ApplicationHandler(WebComponent.java:392)
位于org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
位于org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer:415)
位于org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
位于org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
在
我正在使用pom.xml中的以下依赖项:

 <dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guice</artifactId>
    <version>4.0.0</version>
 </dependency>
 <dependency>
    <groupId>com.google.inject.extensions</groupId>
    <artifactId>guice-servlet</artifactId>
    <version>4.0.0</version>
 </dependency>
 <dependency>
    <groupId>com.squarespace.jersey2-guice</groupId>
    <artifactId>jersey2-guice-impl</artifactId>
    <version>1.0.6</version>
 </dependency>
 <dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.22.2</version>
 </dependency>
 <dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.22.2</version>
 </dependency>
 <dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>2.22.2</version>
 </dependency>
 <dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-mvc</artifactId>
    <version>2.22.1</version>
 </dependency>

番石榴
圭斯
4.0.0
com.google.inject.extensions
guice servlet
4.0.0
com.squarespace.jersey2-guice
运动衫2 guice impl
1.0.6
org.glassfish.jersey.containers
jersey容器servlet
2.22.2
org.glassfish.jersey.core
jersey容器servlet
2.22.2
org.glassfish.jersey.media
泽西岛媒体多部分
2.22.2
org.glassfish.jersey.ext
泽西mvc
2.22.1
这是WebListener:

   SEVERE: Exception starting filter jersey
   java.lang.IllegalStateException: It appears there is no ServiceLocatorGenerator installed.  
     at com.squarespace.jersey2.guice.GuiceServiceLocatorGeneratorStub.create(GuiceServiceLocatortGeneratorStub.java:50)
     at org.glassifsh.hk3.internal.ServiceLocatorFactoryImpl.internalCreate(ServiceLocatorFactoryImpl.java:312)
     at org.glassfish.h2k.internal.ServiceLocatorFactoryimpl.create(ServiceLocatorFactoryImpl.java: 268)
     at org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:138)
     at org.glassfish.internal.inject.Injections.createLocator(Injections.java:123)
     at org.glassfish.jersey.server.ApplicationHandler.<init>(WebComponent.java:392)
     at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:177)
     at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer:415)
     at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
     at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java: 262)
     at ....
@WebListener
public class FakeResourceManager extends GuiceServletContextListener{
      @Override protected Injector getInjector(){
           return Guice.createInjector(new ArrayList<Module>());
      }
}
@WebListener
公共类FakeResourceManager扩展GuiceServletContextListener{
@覆盖受保护的喷油器getInjector(){
返回Guice.createInjector(新的ArrayList());
}
}
这是web.xml

<filter>
     <filter-name>GuiceFilter</filter-name>
     <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
     <filter-name>GuiceFilter</filter-name>
     <url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
     <filter-name>jersey</filter-name>
     <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
     <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>mypackage.rest;guice.tomcat.jersey</param-value>
     </init-param>
     <init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature;org.glassfish.jersey.server.mvc.jsp.JspMvcFeature</param-value>
     </init-param>
</filter>
<filter-mapping>
  <filter-name>jersey</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

GuiceFilter
com.google.inject.servlet.GuiceFilter
GuiceFilter
/*
运动衫
org.glassfish.jersey.servlet.ServletContainer
jersey.config.server.provider.packages
mypackage.rest;guice.tomcat.jersey
jersey.config.server.provider.classnames
org.glassfish.jersey.media.multipart.MultiPartFeature;org.glassfish.jersey.server.mvc.jsp.JspMvcFeature
运动衫
/*
我正在部署Tomcat 7.0.42

这似乎很简单。我认为在装载时可能存在订购问题。在加载筛选器之前,可能没有调用设置ServiceLocatorGenerator。我如何强迫它发生?我错过了什么