Java 如何检查jndi绑定/解除绑定状态?

Java 如何检查jndi绑定/解除绑定状态?,java,queue,jms,bind,jndi,Java,Queue,Jms,Bind,Jndi,我正在寻找检查对象的绑定状态和适当的jndi名称的方法 例如,我有一些ldap jms队列名称: “/TheRootContext/SomeSubContext/SOME.QUEUE。名称:队列” 我需要检查适当的队列是否存在,并且它是否与传递的名称绑定 检查“绑定状态”的正确方法是什么 我看到这样的算法: 执行jndi查找以确保提供的名称存在 Object obj=ctx.lookup(“/TheRootContext/SomeSubContext/SomeQueue.NAME:QUEUE”)

我正在寻找检查对象的绑定状态和适当的jndi名称的方法

例如,我有一些ldap jms队列名称: “/TheRootContext/SomeSubContext/SOME.QUEUE。名称:队列”

我需要检查适当的队列是否存在,并且它是否与传递的名称绑定

检查“绑定状态”的正确方法是什么

我看到这样的算法:

  • 执行jndi查找以确保提供的名称存在

    Object obj=ctx.lookup(“/TheRootContext/SomeSubContext/SomeQueue.NAME:QUEUE”)

  • %我不知道下一步该怎么办%,但建议检查一下:

    obj!=null&&obj instanceof javax.jms.Queue


  • 我说得对吗?正确的方法是什么?

    如果找不到对象,很可能会抛出1。您需要捕获异常或尝试使用方法检查对象是否存在。

    是的,我正在捕获代码,但这只告诉我命名问题,而没有告诉我绑定。例如,ldap名称可能存在,但对象可能不存在。如果是那样的话,我不会得到任何。正如我所看到的,该方法只枚举绑定到上下文的名称。@我是否应该使用该方法?但迭代所有绑定似乎是一个非常沉重的负担。可能存在更轻的方式吗@但您可以将目标名称指定为list或listBindings的输入。在最好的情况下,它将返回1,在最坏的情况下返回0。我不认为它比查找更繁重。而且我也不认为可以将名称绑定为null。至少据我所知,并非所有JNDI提供者都允许这样做。因此,NamingException也将在这种情况下抛出。如果JNDI提供程序可以进行空绑定,那么在#2中进行的检查就足够了。