我想在子资源中注入一个商务服务bean,该子资源在专用类中定义并由子资源定位器传递.
一些示例代码:
根资源
@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(); } }
Jersey不会让CDI调用依赖项...请注意,资源是托管对象.否则甚至不可能在根资源中注入一个bean(这里我推动我的其他问题'查看计数以获得更多意见;-))!
我尝试了我能想到的一切,但它不起作用......
目前我正在使用glassfish 4附带的库.
当然,提前谢谢你(差点忘了)!
好的,我明白了.
这真是一种愚蠢.有时你必须完全回滚.
我最初的尝试肯定有问题(拼写错误,遗漏了一些东西......我无法重现它,无论如何).
我稍微改变了上面的根资源:
@RequestScoped @Path("service") public class MyResource { @Inject MySubResource mySubResource; // Sub resource locator @Path("subservice") public MySubResource locateToSubResource () { return mySubResource; } }
对,就是那样.我必须承认,这是人们可以想象的最直观的解决方案,如果这种方法不起作用,就必须做错事......不要问我究竟是什么原因.
我想它一如既往 - 睡眠剥夺让人们变成了蠢货.