[jboss-user] [EJB/JBoss] - How to locate MDB MXbean via JNDI?
tajh
do-not-reply at jboss.com
Wed Apr 15 13:15:15 EDT 2009
I've searched the documentation and the forums, wasn't able to find this particular issue addressed anywhere.
I have a MDB (called MyMDB) deployed in a JAR, and I have a custom JMX bean deployed in a SAR. I would like to access the org.jboss.ejb.plugins.jms.JMSContainerInvokerMBean corresponding to my MDB so that the custom JMX bean can call the startDelivery() and stopDelivery() methods on the JMSContainerInvokerMBean. So far, I have been unable to locate the JMSContainerInvokerMBean in JNDI from within the SAR.
I have tried the following JNDI contexts, to no avail:
anonymous wrote : java:/comp/env/MyMDB
| java:/com/MyMDB
| java:/MyMDB
| local/MyMDB
| /MyMDB
| MyMDB
|
The JNDIView service in the JMX Console reports the following:
anonymous wrote : Ejb Module: MyMDB.jar
|
| java:comp namespace of the MyMDB bean:
|
| +- HandleDelegate (class: org.jboss.proxy.ejb.handle.HandleDelegateImpl)
| +- ORB (class: org.jacorb.orb.ORB)
| +- env (class: org.jnp.interfaces.NamingContext)
|
And of course I can access the desired JMSContainerInvokerMBean via the JMX console also, at something like the following:
anonymous wrote : jboss.j2ee
|
| * binding=message-driven-bean,jndiName=local/MyMDB at 9049759,plugin=invoker,service=EJB
|
That number following the @ sign seems to be different every time I start JBoss, and this JNDI name seems to only apply from within the MDB's JAR scope itself. At first, I wasn't sure I could get access to the JMSContainerInvokerMBean from outside the MDB's JAR, but if the JMX Console can do it, I should be able to do it from within my custom JMX bean in my SAR.
So does anyone know the correct JNDI path to construct to get a handle to this?
For reference, I am running the following:
JBoss AS 4.2.2 GA
JBoss Messaging 1.0
Java SDK 1.5.0_12
And this is what my client JNDI lookup code looks like:
JMSContainerInvokerMBean mbean = null;
| try {
| Context context = new InitialContext();
| mbean = (JMSContainerInvokerMBean)context.lookup(jndiName);
| } catch (NamingException ne) {
| log.error("Unable to retrieve JMSContainerInvokerMBean at JNDI context " + jndiName, ne);
| } catch (ClassCastException ce) {
| log.error("Object at JNDI context " + jndiName + " is not instance of JMSContainerInvokerMBean", ce);
| }
Any help is appreciated.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4225705#4225705
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4225705
More information about the jboss-user
mailing list