2012-06-13 4 views
0

Я работаю над приложением с несколькими SFSB, реализующими один и тот же интерфейс.SFSB call after remove

Чтобы решить во время выполнения, конкретная реализация котором е использовать, я следующий Factory Method:

@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; 
} 

Каждая конкретная реализация действительно есть @Remove аннотированный метод реализован. Теперь у меня есть случай, когда я хочу удалить этот sfsb и получить новый экземпляр при вызове этого метода.

Я вызываю метод remove и удаляю все ссылки на этот объект, но экземпляр сохраняется в памяти. Когда я теперь попрошу экземпляр этого класса, я получаю тот же экземпляр, для которого я назвал удаление раньше.

Мои вопросы:

  1. У меня возникают проблемы, если я использую этот экземпляр, для которого я назвал метод удалить?
  2. Нормально ли, что удаленный экземпляр хранится в памяти ?
  3. Как я могу эффективно удалить этот экземпляр?
  4. Как я могу получить настоящий новый экземпляр моего класса?

Сердечные приветы Christian

BTW: Я использую JBoss 7.1.1 и Weld

ответ

0

Когда я теперь попросить экземпляр этого класса, я получаю один и тот же экземпляр , для которого я назвал удаление раньше.

Я бы сказал, что это поведение выходит за рамки спецификации и как таковое зависит от поставщика. Новые бобы могут быть взяты из пула старых экземпляров (это, кажется, имеет место здесь) или создано недавно. Эта стратегия может (теоретически) измениться с новыми версиями вашего приложения-сервера, а еще хуже: от среды к среде.

Главный вопрос заключается в том, как вы определяете, что это «новый экземпляр»?

Я считаю, что ответить нелегко, если вы можете жить с ним или нет.

Что вы должны сделать в качестве следующего шага, это проверка жизненных циклов нового компонента. Если все вызывается и все зависимости вводятся правильно, он выглядит довольно неплохо ИМХО.

В противном случае, не стесняйтесь обновить вопрос :)