-
-
2. Re: How can I stop a running mdb?
ramboid Jul 8, 2010 12:26 PM (in response to eskuai)This link has nothing
-
3. Re: How can I stop a running mdb?
eskuai Jul 8, 2010 5:06 PM (in response to ramboid)package paq;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;/**
* Message-Driven Bean implementation class for: EjbMDB
*
*/
@MessageDriven(
activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "/queue/OrderQueue"),
@ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge")
},
mappedName = "/queue/OrderQueue")
public class EjbMDB implements MessageListener {/**
* Default constructor.
*/
public EjbMDB() {
// TODO Auto-generated constructor stub
}
/**
* @see MessageListener#onMessage(Message)
*/
public void onMessage(Message message) {
System.out.println("----------------");
System.out.println("Received message");
System.out.println(message);
TextMessage tm = (TextMessage) message;
try {
System.out.println(tm.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("----------------");
}}
/*------------------------------------------------------*/
package paq;
import javax.ejb.Remote;@Remote
public interface SessionEJBRemote {
public void stopMDB();
public void starMDB();
}/*-----------------------------*/
package paq;
import javax.ejb.Stateless;
import javax.management.MBeanServer;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;import org.jboss.ejb3.mdb.MessagingDelegateWrapperMBean;
import org.jboss.mx.util.MBeanProxy;
import org.jboss.mx.util.MBeanProxyCreationException;
import org.jboss.mx.util.MBeanServerLocator;/**
* Session Bean implementation class SessionEJB
*/
@Stateless
public class SessionEJB implements SessionEJBRemote {/**
* Default constructor.
*/
public SessionEJB() {
// TODO Auto-generated constructor stub
}public void stopMDB() {
String mbean = "jboss.j2ee:jar=StopMDB.jar,name=EjbMDB,service=EJB3";
MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
MessagingDelegateWrapperMBean invoker;
try {
invoker = (MessagingDelegateWrapperMBean)
MBeanProxy.get(MessagingDelegateWrapperMBean.class, new ObjectName(mbean), mbeanServer);
invoker.stopDelivery();
} catch (MalformedObjectNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MBeanProxyCreationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}public void starMDB() {
String mbean = "jboss.j2ee:jar=StopMDB.jar,name=EjbMDB,service=EJB3";
MBeanServer mbeanServer = MBeanServerLocator.locateJBoss();
MessagingDelegateWrapperMBean invoker;
try {
invoker = (MessagingDelegateWrapperMBean)
MBeanProxy.get(MessagingDelegateWrapperMBean.class, new ObjectName(mbean), mbeanServer);
invoker.startDelivery();
} catch (MalformedObjectNameException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MBeanProxyCreationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}
/*----------------------------------*/
package paq;
import java.util.Properties;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;public class ClientMDB {
public static void main(String [] args) {
//ClientMDB.sendMessage();
//ClientMDB.stopMdb();
ClientMDB.startMdb();
}public static void stopMdb() {
ServiceLocator.getSessionEJBRemote().stopMDB();
}
public static void startMdb() {
ServiceLocator.getSessionEJBRemote().starMDB();
}
public static void sendMessage() {
try {
ConnectionFactory connectionFactory = null;
Connection connection = null;
Session session = null;
Destination destination = null;
MessageProducer messageProducer = null;
TextMessage message = null;
connectionFactory = ServiceLocator.getJmsConnectionFactory("/XAConnectionFactory");
connection = connectionFactory.createConnection();
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
destination = ServiceLocator.getJmsDestination("/queue/OrderQueue");
messageProducer = session.createProducer(destination);
message = session.createTextMessage("HOLA JUAN");
messageProducer.send(message);
System.out.println("Message sent to messageProducer");
messageProducer.close();
session.close();
connection.close();} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}/*-----------------------------------*/
package paq;
import java.util.Hashtable;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;public class ServiceLocator {
private static Hashtable<String, String> props = new Hashtable<String, String>();
static {
props.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
props.put("java.naming.provider.url", "localhost:1099");
}
private ServiceLocator() {}
public static ConnectionFactory getJmsConnectionFactory(String jmsConnectionFactoryJndiName)
throws Exception {
ConnectionFactory jmsConnectionFactory = null;
try {
Context ctx = new InitialContext(props);
jmsConnectionFactory = (ConnectionFactory) ctx.lookup(jmsConnectionFactoryJndiName);
} catch (ClassCastException cce) {
throw new Exception(cce);
} catch (NamingException ne) {
throw new Exception(ne);
}
return jmsConnectionFactory;
}
public static Destination getJmsDestination(String jmsDestinationJndiName)
throws Exception {
Destination jmsDestination = null;
try {
Context ctx = new InitialContext(props);
jmsDestination = (Destination) ctx.lookup(jmsDestinationJndiName);
} catch (ClassCastException cce) {
throw new Exception(cce);
} catch (NamingException ne) {
throw new Exception(ne);
}
return jmsDestination;
}
public static SessionEJBRemote getSessionEJBRemote() {
Context context;
SessionEJBRemote remote = null;
try {
context = new InitialContext(props);
remote = (SessionEJBRemote)context.lookup("SessionEJB/remote");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return remote;
}
}