package com.oracle.example.jms.producer; import com.oracle.example.jms.Constants; import weblogic.jms.extensions.WLDestination; import weblogic.jms.extensions.WLMessageProducer; import weblogic.jms.extensions.WLSession; import javax.annotation.PreDestroy; import javax.jms.Connection; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.QueueConnectionFactory; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.util.Hashtable; /** * ************************************************************************** * <p/> * This code is provided for example purposes only. Oracle does not assume * any responsibility or liability for the consequences of using this code. * If you choose to use this code for any reason, including but not limited * to its use as an example you do so at your own risk and without the support * of Oracle. * <p/> * **************************************************************************** */ public class WLJMSProducer { protected WLSession mSession; protected WLMessageProducer mProducer; protected Connection mConnection; protected WLDestination mDestination; public static final String JMS_CF_JNDI = "com/oracle/example/jms/base/cf"; public static final String JMS_QUEUE_JNDI = "com/oracle/example/jms/base/queue"; public static void main(String[] args) { WLJMSProducer jmsProducer = null; try { jmsProducer = new WLJMSProducer( Constants.WL_INITIAL_CONTEXT, Constants.JMS_ENDPOINT_ADDRESS, Constants.USERNAME, Constants.PASSWORD, JMS_CF_JNDI, JMS_QUEUE_JNDI); jmsProducer.beginSession(false); jmsProducer.sendMessageBatch("Hello World!", 100, 0); jmsProducer.endSession(); } catch (Exception e) { e.printStackTrace(); } finally { if (jmsProducer != null) { try { jmsProducer.close(); } catch (JMSException e) { e.printStackTrace(); } } } } public void sendMessageBatch(String pMessageBase, int pMessageCount, long pIntervalTimeInMillis) throws JMSException { beginSession(false); for (int x = 1; x <= pMessageCount; x++) { String text = pMessageBase + "-" + x; sendMessage(text); sleep(pIntervalTimeInMillis); } endSession(); } protected static void sleep(long time) { try { Thread.sleep(time); } catch (Exception e) { e.printStackTrace(); } } protected void sendMessage(String text) throws JMSException { if (mSession == null) { beginSession(false); } final Message sendMsg = mSession.createTextMessage(text); System.out.println("Sending TextMessage=[" + text + "]"); mProducer.send(sendMsg); } protected void beginSession(boolean pTransacted) throws JMSException { System.out.println("Creating session..."); mSession = (WLSession) mConnection.createSession(pTransacted, 0); System.out.println("Creating producer..."); mProducer = (WLMessageProducer) mSession.createProducer(mDestination); } protected void endSession() throws JMSException { System.out.println("Closing Producer..."); mProducer.close(); System.out.println("Closing Session..."); mSession.close(); } protected void commitSession() throws JMSException { System.out.println("Committing session..."); mSession.commit(); } @PreDestroy protected void close() throws JMSException { System.out.println("Closing WL JMS Producer..."); System.out.println("Closing Connection..."); mConnection.close(); } protected WLJMSProducer() { } public WLJMSProducer(String pInitialContext, String pURL, String pUsername, String pPassword, String pCFName, String pQueueJNDIName) throws NamingException, JMSException { final InitialContext context; Hashtable<String, String> h = new Hashtable<String, String>(7); h.put(Context.INITIAL_CONTEXT_FACTORY, pInitialContext); h.put(Context.PROVIDER_URL, pURL); //h.put(Context.SECURITY_PRINCIPAL, pUsername); //h.put(Context.SECURITY_CREDENTIALS, pPassword); System.out.println("Getting context with URL=[" + pURL + "]..."); context = new InitialContext(h); System.out.println("Looking up CF jndi=[" + pCFName + "]..."); QueueConnectionFactory connectionFactory = (QueueConnectionFactory) context.lookup(pCFName); System.out.println("Looking up Destination jndi=[" + pQueueJNDIName + "]"); mDestination = (WLDestination) context.lookup(pQueueJNDIName); System.out.println("Creating connection..."); mConnection = connectionFactory.createQueueConnection(); } }