Я хотел бы добавить компонент службы buisiness в дополнительный ресурс, который определен в выделенном классе и доставлен локатором вспомогательных ресурсов.Джерси: Как ввести EJB в дополнительный ресурс?
Некоторые примеры кода:
Корневой ресурс
@RequestScoped @Path("service") public class MyResource { @Context ResourceContext resourceContext; // Sub resource locator @Path("subservice") public MySubResource locateToSubResource() { // I don't want to create it myself. return resourceContext.getResource(MySubResource.class); } }
Соответствующий югу ресурс
@RequestScoped public class MySubResource { // Note that businessBean itself consists of // multiple ejbs that also need to be injected so that it can do its job! @Inject private BusinessBean businessBean; @GET @Produces(MediaType.TEXT_PLAIN) public String get() { return businessBean.doStuff(); } }
Джерси не CDI позволяют вызывать зависимости. .. Обратите внимание, что ресурсы являются управляемыми объектами. В противном случае даже невозможно было бы добавить компонент в корневой ресурс (here I'm pushing my other questions' view count to get more opinions ;-))!
Я попробовал все, что я могу думать, но он просто не будет работать ...
В настоящее время я использую библиотеки, которые поставляются вместе с GlassFish 4.
И конечно, спасибо заранее (почти забыл)!
Это, наконец, тоже помогло мне, но у меня есть вопрос: действительно ли требуется '@ RequestScoped' в корневом классе ресурсов? Это также работает для меня без этого, и я думал, что вам не нужен компонент CDI для ввода другого, но он также работает с классами ресурсов JAX-RS (например)? –
На самом деле кажется, что даже один из них не должен использовать явный '@ RequestScoped' на вспомогательном ресурсе, потому что согласно [this] (http://stackoverflow.com/questions/10293510/what-is-the- default-scope-of-a-named-cdi-bean/10293686 # 10293686) ответ, область по умолчанию должна быть такой же, как класс, который получает инъекцию? На самом деле, я тоже могу оставить эту аннотацию. –