我不是JNDI的特别粉丝 - 我认为当出于多种原因想要使用OSGI时,这是一项糟糕的技术。
我想控制jndi上下文的范围。我需要它使用Hornet JMS层,不幸的是使用JNDI来注册队列,主题等。我不想提供我自己编码的jndi上下文,我想尝试重用另一个提供其范围而不是全局的。
有没有人有解决这个问题的解决方案/建议?
答案 0 :(得分:1)
您不需要JNDI上下文实现来解决此问题。您只需要像在Java的其余部分一样正确编码资源获取和发布:基本上,通过Context.close()
块中的finally{}
。另外,请务必关闭您可能拥有的任何NamingEnumerations
。
答案 1 :(得分:1)
SimpleJNDI是JNDI的开源实现,支持内存上下文,可以从文件夹树(子上下文)和属性/ XML文件(对象)填充。
官方网站上的更多信息:http://code.google.com/p/osjava/wiki/SimpleJNDI(文档在可下载档案中)。
(P.S。:这不是一个活跃的项目 - 最新版本是从2010年开始 - 但它无论如何都可以帮助......)
答案 2 :(得分:1)
我认为Simple-JNDI可以满足您的要求“提供范围而非全局”。您可以将其配置为生成共享或非共享上下文。每次拨打
时都处于非共享模式Context ctx = new InitialContext()
您将获得上下文定义的唯一内存副本,只有调用代码才能查看和修改。
要获得有关它的更多信息,请转到https://github.com/h-thurow/Simple-JNDI。它是一个基于旧的osjava Simple-JNDI的活动项目。