jboss - 无法通过 JNDI 查找 OSGI 服务

标签 jboss osgi jndi

我正在使用 JBossAS7。 我的应用程序有一些 OSGI 模块和很大的非 OSGI 部分。 我尝试通过 JNDI 在非 osgi 子系统中查找 osgi 服务,但它们不存在于 JNDI 上下文中。 我在 JBOSS 7 - Osgi Bundles not present in JNDI TREE 发现了类似的问题但我没有在那里找到任何解决方案。如果 JBoss 团队还没有实现这个功能,我现在该如何解决这个问题?

我尝试手动将我的服务添加到 JNDI 上下文,但出现异常,因为 JNDI 上下文是只读的(根据 https://issues.jboss.org/browse/AS7-421)

最佳答案

它还没有完全集成(监视 JBOSGI-81 以检查状态),但是我认为您可以通过获取 Apache Aries JNDI OSGi bundle 并将它们部署在 JBoss AS7 中来完成这项工作。

为此,部署并启动

JNDI 包会提示它不能用 NamingManager 设置一些静态信息,但你可以忽略它,因为 AS7 JNDI 会处理这个问题。 安装上面的包后你应该可以做

osgi:service/org.foo.SomeInterface

osgi:servicelist 

类型查找...例如您可以尝试以下方法来查找框架注册的起始级别服务:

osgi:service/org.osgi.service.startlevel.StartLevel

我刚刚在 AS7 7.1.2 上试过了,它对我有用...

有一点需要注意,如果您正在查找的实体实现了另一个 AS7/MSC 模块或 OSGi 包中定义的接口(interface),如果您希望能够转换为这个界面。在 OSGi 世界中,您可以只导入包,但在 AS7 模块(例如 war 文件)中,您可以通过添加 Dependencies list header 来实现。

关于jboss - 无法通过 JNDI 查找 OSGI 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10483740/

相关文章:

tomcat - 使用 tomcat 和 JNDI 针对多个 AD 组进行用户身份验证

grails - 由于 JNDI 查找,无法在 Grails 集成测试中初始化服务

java - 为什么 DirContext.close() 不将 LDAP 连接返回到池中?

java - JDBC 连接字符串与 selectMethod=cursor 断开连接

java - Camel Jetty 中的自定义基本身份验证

java - 如何使用 s/mime 和 x509 证书加密整个 json 数据

java - KURA使用: "com.sun.net.httpserver.*" in an OSGI bundle包下的类

import - 如何从不同的 osgi 包中导入相同的包?

java - 在 JBoss 上发布时通过 Maven 插件复制文件

java - 耳朵部署期间的飞路迁移