Jboss Can';t通过JNDI查找OSGI服务

Jboss Can';t通过JNDI查找OSGI服务,jboss,osgi,jndi,Jboss,Osgi,Jndi,我在使用JBossAS7。 我的应用程序有一些OSGI模块和很大的非OSGI部分。 我尝试通过JNDI在非osgi子系统中查找osgi服务,但它们在JNDI上下文中不存在。 我发现类似的问题,但我没有找到任何解决办法。如果JBoss团队还没有实现这个功能,我现在如何解决这个问题 我试图手动将我的服务添加到JNDI上下文中,但出现了一个异常,因为JNDI上下文是只读的(根据)它还没有完全集成(监视以检查状态),但是我认为您可以通过使用ApacheAries JNDI OSGi包并在JBoss AS

我在使用JBossAS7。 我的应用程序有一些OSGI模块和很大的非OSGI部分。 我尝试通过JNDI在非osgi子系统中查找osgi服务,但它们在JNDI上下文中不存在。 我发现类似的问题,但我没有找到任何解决办法。如果JBoss团队还没有实现这个功能,我现在如何解决这个问题


我试图手动将我的服务添加到JNDI上下文中,但出现了一个异常,因为JNDI上下文是只读的(根据)

它还没有完全集成(监视以检查状态),但是我认为您可以通过使用ApacheAries JNDI OSGi包并在JBoss AS7中部署它们来实现这一点

为此,请部署并启动

JNDI bundle会抱怨它无法使用NamingManager设置一些静态,但是您可以忽略这一点,因为AS7JNDI会处理这些。 安装了上述捆绑包后,您应该能够

osgi:service/org.foo.SomeInterface

类型查找。。。例如,您可以尝试以下操作来查找框架注册的启动级别服务:

osgi:service/org.osgi.service.startlevel.StartLevel
我刚刚在AS7.1.2上试用过,它对我很有用


需要注意的一点是,如果您正在查找的实体实现了另一个AS7/MSC模块或OSGi捆绑包中定义的接口,那么如果您希望能够转换到此接口,则需要确保使用者对该接口具有可见性。在OSGi世界中,您可以只导入包,但在AS7模块(例如war文件)中,您可以通过添加依赖项清单头来实现这一点。

我在清单中向依赖项添加了模块,但得到了一个异常org.jboss.modules.ModuleNotFoundException:module[module_name]:main在本地模块加载器@19e3118a中找不到(根:[jboss_目录]\modules)我不清楚你的设置到底是什么,以及它抱怨什么依赖关系。也许你想在JBoss OSGi论坛上详细发布你的场景。在上面的描述中,我只是安装并启动了Aries捆绑包。模块依赖关系与你是否想将通过JNDI查找的对象强制转换为特定api有关。。。我可以确认此解决方案与7.1.1.Final一起使用。谢谢!
osgi:service/org.osgi.service.startlevel.StartLevel