Ни один контейнер никогда не сможет внедрить что-либо в неуправляемый объект.
Чтобы иметь возможность внедрить в объект, контейнер должен управлять жизненным циклом объекта или, по крайней мере, участвовать в нем.управление его жизненным циклом, так что он может получить объект на ранней стадии, чтобы выполнить инъекцию.Если объект создается и используется, не подвергаясь воздействию контейнера (как я представляю, компоненты действия Struts), то у контейнера никогда не будет шанса вставить в него что-либо.Контейнер не волшебный - он не может просто обнаруживать объекты, создаваемые по всей JVM, и что-то с ними делать.
В ответе Микко есть хороший список типов объектов, которые можно будет ввести.Если боевые бины не являются одними из тех, я не боюсь, я боюсь.
Теперь, после всего сказанного, в конце туннеля есть свет: вполне возможно написать расширение дляРаспорки, которые обрабатывают инъекцию.Инъекции @EJB и @Resource довольно просто соответствуют конкретным поискам JNDI;расширение может рефлексивно искать аннотированные поля, затем выполнять соответствующий поиск JNDI и вводить результаты.Внедрение CDI еще проще, потому что у него есть API, специально предназначенный для написания расширений.В качестве примера выполнения всего этого взгляните на обогащение для инъекций Stripes , которое добавляет поддержку @EJB, @Resource и @Inject в веб-инфраструктуру Stripes .*