I'm looking for way of checking bind status of object and appropriate JNDI name.
For example, I've got some LDAP jms queue name: "/TheRootContext/SomeSubContext/SOME.QUEUE.NAME:queue"
I need to check that appropriate queue exists and it is binded with passed name.
What will be the correct way to check "bind status"?
I see such algorithm:
- Perform jndi lookup to ensure that provided name exists.
Code:Object obj; try { obj = ctx.lookup("/TheRootContext/SomeSubContext/SOME.QUEUE.NAME:queue"); } catch(NamingException ex) { // process naming exception: name not found, name syntax incorrect, ... }
- %I don't know what to do next%, but suggest something like checking that:
Code:obj != null && obj instanceof javax.jms.Queue
===
Another way, suggested here: http://stackoverflow.com/questions/5...-unbind-status
is to use listBindings method, passing to it parent context name: and checking what interested binding present in returned NamingEnumeration. But this is actually the same as previous method. This way something like this should be done:
So, what is the correct way?Code:NamingEnumeration bindings; try { bindings = ctx.listBindings("/TheRootContext/SomeSubContext/SOME.QUEUE.NAME"); } catch(NamingException ex) { // process naming exception: name not found, name syntax incorrect, ... } boolean isFound, isBinded; while (bindings!=null && bindings.hasMore()) { Binding bd = (Binding) bindings.next(); if(bd.getName().equals("queue")) { isFound = true; isBinded = bd.getObject() != null && bd.getObject() instanceof javax.jms.Queue) ; break; } } System.out.println("Is binded: " + isFound && isBinded);


Reply With Quote

Bookmarks