1

I am trying to stop a MDB in JBoss 5.1.0.

My code is as follows :

public static void stopAllMDB()
        throws InterruptedException, MalformedObjectNameException, NullPointerException {

        String currentVersion = "1.0";

        for (String name : Util.MDB_NAMES) {
            String mbean = "jboss.j2ee:ear=myEar" + currentVersion + ".ear,jar=myJar.jar,name=myMDB,service=EJB3";
            ObjectName objName = new ObjectName(mbean);

            System.out.println("Stop MDB " + name);
            try {
                MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
                MessagingDelegateWrapperMBean invoker = (MessagingDelegateWrapperMBean)MBeanProxy.get(MessagingDelegateWrapperMBean.class,
                        objName, mbeanServer);
                invoker.stopDelivery();
                }
            } catch (Exception e) {
            }
 }

But if fails at

MessagingDelegateWrapperMBean invoker = (MessagingDelegateWrapperMBean)MBeanProxy.get(MessagingDelegateWrapperMBean.class,objName, mbeanServer)

with

Illegal argument exception.

Cœur
  • 37,241
  • 25
  • 195
  • 267
Sergiu
  • 2,502
  • 6
  • 35
  • 57

1 Answers1

2

Apparently the code I was using wasn't working. Don't know why. On a JBoss 5.1.0 GA platform the following apply :

MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
String mbean = "jboss.j2ee:ear=myEar.ear,jar=all-ejbs.jar,name=" + name + ",service=EJB3";
ObjectName objectName = new ObjectName(mbean);
mbeanServer.invoke(objectName, "stopDelivery", new Object[] {}, null);

And as a remark I didn't experience the session exception you got.

Sergiu
  • 2,502
  • 6
  • 35
  • 57