This tutorial is on Weblogic server.
before running this tutorial it is expected that Connection factory and queue JNDI is created on weblogic server.
package com.test;
before running this tutorial it is expected that Connection factory and queue JNDI is created on weblogic server.
- This is Message listener bean
package com.test;
import javax.jms.Message;
import javax.jms.MessageListener;
public class SpringMDP implements MessageListener{
 public void onMessage(Message message) {
  if (MapMessage.class.isInstance(message)) {
        MapMessage mapMessage = (MapMessage)(message);
      }
  }
}
- This is the configuration for Message listner bean
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="messageListener" class="com.test.SpringMDP" />
 <bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName">
     <value>connectionFactoryJNDI</value>
  </property>
   <property name="jndiTemplate">
     <ref bean="jndiTemplate" />
  </property> 
 </bean>
 <bean id="queue" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName">
    <value>queueJNDI</value>
  </property>
  <property name="jndiTemplate">
    <ref bean="jndiTemplate" />
  </property>
 </bean>
   <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer102">
     <property name="concurrentConsumers" value="5" />
     <property name="connectionFactory" ref="connectionFactory" />
     <property name="destination" ref="queue" />
     <property name="messageListener" ref="messageListener" />
 </bean>
</beans>
- This is a client Which publish the message
package com.test;
import java.util.Properties;
import javax.jms.DeliveryMode;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import org.apache.log4j.Logger;
public class JMSClient {
    protected final static Logger log = Logger.getLogger(JMSClient.class);
    public  void publishmessage() {
     QueueConnection connection =null; 
     QueueSession qsession = null;
     try { 
      Context jndiContext = getInitialContext();
      QueueConnectionFactory connFactory = (QueueConnectionFactory)jndiContext.lookup("connectionFactoryJNDI");
      Queue targetQueue = (Queue)jndiContext.lookup("queueJNDI");
      connection = connFactory.createQueueConnection();
      qsession = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
      QueueSender sender = qsession.createSender(targetQueue);
      sender.setDeliveryMode(DeliveryMode.PERSISTENT);
      MapMessage message = qsession.createMapMessage();
      sender.send(message);
     }catch(Exception exp){
      log.error(exp.getMessage(), exp);
     }finally {
      if (qsession != null) {
       try{
       qsession.close();
       }catch(JMSException je){
        log.error(je.getMessage(), je);
       }
      }
      if (connection != null) {
       try {
       connection.close();
       }catch(JMSException je){
        log.error(je.getMessage(), je);
       }
      }
     }
    }
    public static InitialContext getInitialContext() throws javax.naming.NamingException {
        String url;
        url = "t3://localhost:7001";
        Properties h = new Properties();
        h.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
        h.put(Context.PROVIDER_URL, url);
        return( new InitialContext());
    }
}
 
No comments:
Post a Comment