我在Jetty中运行了Hibernate和JSF 2的CDI / Weld应用程序。
我需要在Jetty服务器启动后进行一些初始化。我在@PostConstruct
bean的@ApplicationScoped
方法中执行此操作,但在将请求发送到应用程序之前不会调用它。我等不及了。
我试图找出是否有办法通过Weld挂钩应用程序生命周期,但我找不到任何东西。
有人可以帮帮我吗?
答案 0 :(得分:4)
在Java EE 7 / CDI 1.1 / Weld 2.0中,您可以观察@Initialized(ApplicationScoped.class)ServletContext事件。这将导致您的bean的实例急切地创建。
答案 1 :(得分:2)
servlet上下文侦听器怎么样?如果您需要注射,注射应该可以正常使用。它还取决于您需要进行何种初始化。可能会有一些您无法访问的内容,例如请求或会话范围的bean。
答案 2 :(得分:0)
要注意谁可能偶然发现这个问题。我无法使它发挥作用,最后还是写了自己的单身来处理情况。