Jakarta ee 卸下后SFSB呼叫

Jakarta ee 卸下后SFSB呼叫,jakarta-ee,java-ee-6,cdi,jboss7.x,jboss-weld,Jakarta Ee,Java Ee 6,Cdi,Jboss7.x,Jboss Weld,我正在开发一个应用程序,其中几个SFSB都实现了相同的接口 要在运行时决定使用哪种具体实现,我有以下工厂方法: @SuppressWarnings("rawtypes") @Inject @Any Instance<SFSBInterface> sfsbSource; public <T> SFSBInterface<T> initBeanForm(Class<T> clazz, Class<? extends SFSBInterface&

我正在开发一个应用程序,其中几个SFSB都实现了相同的接口

要在运行时决定使用哪种具体实现,我有以下工厂方法:

@SuppressWarnings("rawtypes")
@Inject @Any Instance<SFSBInterface> sfsbSource;

public <T> SFSBInterface<T> initBeanForm(Class<T> clazz, Class<? extends SFSBInterface<T>> sfsbClass, Annotation... qualifiers) {
    SFSBInterface<T> sfsb = sfsbSource.select(sfsbClass, qualifiers).get();
    return sfsb;
}
@SuppressWarnings(“rawtypes”)
@注入@任何实例sfsbSource;
公共SFSBInterface initBeanForm(类clazz,类
当我现在要求这个类的一个实例时,我得到了相同的结果
例如,我之前调用了remove

我想说的是,这种行为超出了规范,因此高度依赖于供应商。新bean可以从旧实例池中获取(这里似乎就是这种情况)或新创建。这种策略(理论上)可以随着应用服务器的新版本而改变,甚至更糟:从一个环境到另一个环境

一个核心问题是如何确定它是一个“新实例”

我想如果你能接受与否,回答这个问题并不容易

下一步你应该做的是检查新bean的生命周期钩子。如果所有的东西都被调用了,并且所有的依赖项都被正确注入了,那么它看起来非常好

否则,请随时更新问题:)