I have deployed a MDB in the JBOSS.
I send a simple message to the JBOSS testQueue and the MDB reads that message.
Is there any way to stop the MDB to get the message from the testQueue ?
I already invoke the JMSContainerInvokerMBean for that MDB and also
invoke the stopDelivery();/stop(); method on it.
But it is not working.
when I send the message MDB is reading the message.
Please help me.
Code is listed below.
package com.test;
|
| import org.jboss.logging.Logger;
| import org.jboss.mx.util.MBeanServerLocator;
| import org.jboss.mx.util.MBeanProxy;
| import org.jboss.ejb.plugins.jms.JMSContainerInvokerMBean;
|
| import javax.ejb.SessionBean;
| import javax.ejb.CreateException;
| import javax.ejb.SessionContext;
| import javax.ejb.EJBException;
| import javax.management.MBeanServer;
| import javax.management.ObjectName;
| import javax.management.MalformedObjectNameException;
| import javax.management.MBeanInfo;
| import javax.naming.Context;
| import javax.naming.InitialContext;
| import javax.naming.NamingException;
|
| /**
| * Created by IntelliJ IDEA.
| * User: 151054
| * Date: Aug 30, 2007
| * Time: 2:29:30 PM
| * To change this template use File | Settings | File Templates.
| */
|
| public class MBeanTestBean implements SessionBean {
|
| //private static Logger log;
| private SessionContext mContext;
| private MBeanServer mbeanServer;
| private ObjectName mManagementService;
|
| private Context jndiCtx=null;
| private JMSContainerInvokerMBean invoker = null;
|
|
| public MBeanTestBean() {
| }
|
| public void ejbCreate() throws CreateException {
|
| if(mbeanServer == null)
| try {
| jndiCtx = new InitialContext();
| String serverName =
(String)jndiCtx.lookup("java:comp/env/Server-Name");
| serverName = serverName.trim();
| if(serverName == null || serverName.length() == 0 ||
serverName.equals("null")) {
| try {
| mbeanServer = MBeanServerLocator.locateJBoss();
| System.out.println("@@@ --------- mbeanServer =
"+mbeanServer.getDefaultDomain());
| System.out.println("@@@ --------- mbeanServer No of
MBean = "+mbeanServer.getMBeanCount());
|
| }
| catch(IllegalStateException e) {
| throw new CreateException("No local JMX MBeanServer
available");
| }
| } else {
| Object lServer = jndiCtx.lookup(serverName);
| if(lServer != null) {
| if(lServer instanceof MBeanServer)
| mbeanServer = (MBeanServer)lServer;
| else
| throw new CreateException("Server: " + lServer +
" reference by Server-Name: " + serverName + " is not of type
MBeanServer");
| } else {
| throw new CreateException("Server-Name " +
serverName + " does not reference an Object in JNDI");
| }
| }
| }
| catch(NamingException ne) {
| throw new EJBException(ne);
| }
| }
|
| public void setSessionContext(SessionContext sessionContext) throws EJBException
{
| }
|
| public void ejbRemove() throws EJBException {
| }
|
| public void ejbActivate() throws EJBException {
| }
|
| public void ejbPassivate() throws EJBException {
| }
|
| public void invokeMBeanFeatures(){
|
| try{
|
| //Object name = jndiCtx.lookup("MessageEJB");
|
| ObjectName objName = new
ObjectName("jboss.j2ee:service=EJB,plugin=invoker,binding=message-driven-bean,jndiName=MessageEJB");
| //ObjectName objName = new ObjectName((String)name);
| MBeanInfo objMBeanInfo = mbeanServer.getMBeanInfo(objName);
| System.out.println("@@ -- MBeanTestBean :invokeMBeanFeatures :
"+objMBeanInfo.getClassName());
|
| invoker = (JMSContainerInvokerMBean)
MBeanProxy.get(JMSContainerInvokerMBean.class,objName,mbeanServer );
| //invoker.stopDelivery();
| invoker.stop();
|
| }catch(Exception ex){
|
| ex.printStackTrace();
| }
| }
| }
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4079580#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...