发布于2023-09-21 20:49 阅读(1185) 评论(0) 点赞(10) 收藏(4)
这么简单的问题,但我在谷歌上找不到答案。我在 glassfish4 上有两个 osgi 包:
- Bundle1 - Servlet
- Bundle2 - MyEJB1、MyEJB2。两个 EJB 都是本地的、无状态的,实现相同的接口 (MyLocalInterface),并且每个 EJB 都有自己的名称。
在 servlet 中,我像这样注入 EJB:
@Inject @OSGiService (dynamic = true)
private MyLocalInterface ejb;
如何通过名称区分这两个用于注入的 EJB?我认为我应该在 @OSGiService 中使用 serviceCriteria 但如何呢?
编辑:
我有很多具有相同接口的 osgi 服务(不是 ejb,简单的 osgi 服务)。为了区分它们,我使用
@Inject @OSGiService(dynamic=true, serviceCriteria = "(component.name=com.bla.bla)").
ejb 也需要同样的东西。
EDIT2:
到目前为止,我发现的唯一方法是使用 jndi-name 因为两个 cdi bean 都是 EJB:
@Inject @OSGiService(dynamic=true, serviceCriteria = "(jndi-name=java:global/....)").
当心!没有“()”就不行!但如果我们解决这个问题,这个解决方案可能会更好:Glassfish 4: how to set application or module name for JNDI
只需使用@Named("myname")注释即可。标准中已经定义了它。
作者:黑洞官方问答小能手
链接:http://www.javaheidong.com/blog/article/677399/31eafd4b1645e7722fa7/
来源:java黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 java黑洞网 All Rights Reserved 版权所有,并保留所有权利。京ICP备18063182号-2
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!