球衣2.22中的servicelocator impl关闭问题

时间:2019-06-12 11:31:01

标签: java spring rest jersey hk2

我的Jersey应用程序容器已关闭,并显示以下异常消息。

java.lang.IllegalStateException: ServiceLocatorImpl(__HK2_Generated_0,0,1879131528) has been shut down
    at org.jvnet.hk2.internal.ServiceLocatorImpl.checkState(ServiceLocatorImpl.java:2288)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getServiceHandleImpl(ServiceLocatorImpl.java:629)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getServiceHandle(ServiceLocatorImpl.java:622)
    at org.jvnet.hk2.internal.ServiceLocatorImpl.getServiceHandle(ServiceLocatorImpl.java:640)
    at org.jvnet.hk2.internal.FactoryCreator.getFactoryHandle(FactoryCreator.java:103)
    ... 59 common frames omitted
Wrapped by: org.glassfish.hk2.api.MultiException: A MultiException has 1 exceptions.  They are:
1. java.lang.IllegalStateException: ServiceLocatorImpl(__HK2_Generated_0,0,1879131528) has been shut down

无论何时出现上述错误,应用程序都无法处理该请求。它反复显示相同的消息,并且     我的spring应用程序容器也关闭了。下面是我得到答复的错误消息。

org.springframework.beans.factory.BeanCreationNotAllowedException: Error creating bean with name 'daoQuery': Singleton bean creation not allowed while the singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!)

java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext

我的Glassfish球衣泽西版是2.22.2。

以上情况仅在重负载下发生。

我们分析了此问题,发现此问题在多种情况下都会发生。

  1. 负载均衡器超时过高
  2. Jersey Hk2冲突

我们纠正了这两点,但是在重负载下我们仍然遇到相同的错误。

有什么方法可以防止或解决问题?

1 个答案:

答案 0 :(得分:1)

您应该升级到最新的2.28最新版本,或者至少更新2.26版,以解决HK2问题

  

Jersey代码的另一个更大的变化是尝试使Jersey核心独立于任何特定的注入框架。就像您现在看到的那样, Jersey 2.x曾经(非常!)依赖HK2,这有时会引起问题(尤其是在其他注射容器上运行时。Jersey现在定义了它自己的注射门面, ,如果正确实施,将替换所有内部Jersey注入。

     

别误会-球衣仍然在hk2上运行。但是,当其他容器提供相同的功能时,应该有可能摆脱这种依赖性。如前所述,这样做的动机是能够与cdi,guice等其他框架无缝集成。这仍在进行中,结果是:用户必须提供Jersey注入实现。现在唯一一个100%准备就绪的版本基于hk2:

   <groupId>org.glassfish.jersey.inject</groupId>
    <artifactId>jersey-hk2</artifactId>
    <version>2.26</version>