2011-03-30 2 views
1

JBoss 5.1.0에서 MDB를 중지하려고합니다.JBoss 5.1.0GA에서 프로그램 적으로 MDB 중지

내 코드는 다음과 같습니다

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) { 
      } 
} 

을하지만

불법 인수 예외

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

에 실패하는 경우.

+0

답장을 보내 주셔서 감사합니다 ... 그 후로 고쳐 주셨습니다. :) – Sergiu

답변

2

명백하게 내가 사용하고 있던 코드는 작동하지 않았습니다. 이유를 모르겠다. JBoss 5.1.0 GA 플랫폼에서 다음과 같이 적용됩니다.

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); 

그리고 내가 가진 세션 예외는 발생하지 않았습니다.

관련 문제