/* * Copyright 1998-2002, Orbeon, Inc. * All Rights Reserved * * This is unpublished proprietary source code of Orbeon, Inc. The * copyright notice above does not evidence any actual or intended * publication of such source code. */ package org.orbeon.oxf.util; import org.orbeon.oxf.common.OXFException; import javax.jms.JMSException; import javax.jms.Queue; import javax.jms.QueueConnection; import javax.jms.QueueConnectionFactory; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class JMSUtils { public static final String JNDI_SERVICE_PREFIX = "ois.bus.service."; /** * Returns a new queue connection. The queue connection must be * closed by the caller. */ public static QueueConnection getQueueConnection() throws JMSException { try { final QueueConnectionFactory queueConnectionFactory = (QueueConnectionFactory) new InitialContext().lookup("weblogic.jms.ConnectionFactory"); return queueConnectionFactory.createQueueConnection(); } catch (NamingException e) { throw new OXFException(e); } } /** * Creates a new queue in JMS server if a queue with the given * name does not already exist. */ public static Queue createQueue(String jndiName) { try { InitialContext initialContext = new InitialContext(); try { // See if the queue already exists return (Queue) initialContext.lookup(jndiName); } catch (NamingException e) { // If it does not exist, create it Class jmsHelper = Class.forName("weblogic.jms.extensions.JMSHelper"); Method createPermanentQueueAsync = jmsHelper.getMethod("createPermanentQueueAsync", new Class[] {Context.class, String.class,String.class, String.class}); createPermanentQueueAsync.invoke(null, new Object[] {initialContext, "WSStoreForwardInternalJMSServermyserver", jndiName, jndiName}); return (Queue) initialContext.lookup(jndiName); } } catch (IllegalAccessException e) { throw new OXFException(e); } catch (InvocationTargetException e) { throw new OXFException(e); } catch (NoSuchMethodException e) { throw new OXFException(e); } catch (ClassNotFoundException e) { throw new OXFException(e); } catch (NamingException e) { throw new OXFException(e); } } }