本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

带有 @OSGiService 的 EJB 名称

发布于2023-09-21 20:49     阅读(1185)     评论(0)     点赞(10)     收藏(4)


这么简单的问题,但我在谷歌上找不到答案。我在 glassfish4 上有两个 osgi 包:

  1. Bundle1 - Servlet
  2. 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黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

10 0
收藏该文
已收藏

评论内容:(最多支持255个字符)