使用我们在以下内容中发现的想法:
我们想使用拦截器来从 EJB 访问 Spring Boot bean。但问题是,文档的示例使用了新的上下文。
EJB 如何访问 spring boot 上下文?
我们试过这个:
public class MySpringActuatorMetricsCoreTestInterceptor extends SpringBeanAutowiringInterceptor {
//Spring boot application context
@Autowired
ApplicationContext applicationContext;
@SuppressWarnings("resource")
@Override
protected BeanFactory getBeanFactory(Object target) {
return applicationContext.getAutowireCapableBeanFactory();
}
}
Run Code Online (Sandbox Code Playgroud)
EBJ 看起来像这样:
// ejb
@Stateless
// spring
@Interceptors(MySpringActuatorMetricsCoreTestInterceptor.class)
public class FirstBean {
[...]
Run Code Online (Sandbox Code Playgroud)
问题是:应用程序上下文尚未初始化,因为 EJB 初始化发生在之前并因此发生 -> 空指针异常。
我们认为有两种选择: - 我们以某种方式从 Spring Boot 中获取应用程序上下文。- 我们可以将我们可以通过 MySpringActuatorMetricsCoreTestInterceptor 创建的上下文提供给 spring 引导上下文。
有什么解决办法吗?另外一个选项?
我们正在使用 Glassfish 3.1
谢谢!