Относительно вашего собственного ответа: вы изменили полную логику приложения, переместив вызов бизнес-метода usePooledObject()
в прослушиватель инициализации вместо вызова его вручную, как в исходном примере.
Это, вероятно, не самый лучшийидея, поскольку объекты, которые дико выполняются при произвольных событиях инициализации, очень трудно контролировать.
Таким образом: точка, которую вы, вероятно, пропустили, использует get()
после select()
:
try (SeContainer ...) {
// replaces the original "new":
UsePoolManager user = CDI.current().select(UsePoolManager.class).get();
user.usePooledObject();
}
Также обратите внимание, что использование CDI.current()
устраняет необходимость иметь конкретную ссылку на контейнер в области видимости.Таким образом, вы можете использовать его везде в вашем приложении, пока контейнер активен.