Tengo una cola JMS configurado en remoto servidor glassfish. Estoy tratando de conectar esta cola de mi máquina local. Es posible conectar directamente a este servidor o tengo que conectar a través de algún corredor/agente? ¿Cómo funciona? (Estoy fresco en jms área)
Muchas gracias

OriginalEl autor speedingdeer | 2013-06-24

3 Comentarios

  1. 11

    Si la aplicación cliente se está ejecutando fuera de Glassfish es un simple ejemplo de código para abrir el mq cliente.

    Para conseguir que el trabajo que se necesita hacer referencia a 2 openmq frascos de la glassfishInstall/mq/lib – imq.jar y jms.jar

    import com.sun.messaging.ConnectionConfiguration;
    import com.sun.messaging.ConnectionFactory;
    import com.sun.messaging.Queue;
    import javax.jms.Connection;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageProducer;
    import javax.jms.Session;
    
    public class TestJmsClientStandalone2 {
    
        public static void main( String[] args ) throws JMSException
        {
            ConnectionFactory connFactory = new ConnectionFactory();
            connFactory.setProperty(ConnectionConfiguration.imqAddressList, "remotehostip:7676");
    
            Queue myQueue = new Queue("myRemoteQueue");
    
            try (Connection connection = connFactory.createConnection(); 
                    Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
                    MessageProducer producer = session.createProducer(myQueue)) {
    
                Message message = session.createTextMessage("this is my test message");
                producer.send(message);
            }
        }
    }

    OriginalEl autor Stewart Evans

  2. 6

    Es tu aplicación cliente que se ejecuta en un local de glassfish instancia y tratar de conectar con glassfish remoto de la instancia de recursos JMS?

    Si sí, entonces he encontrado 2 maneras de hacer esto. Para ambas opciones, configurar la misma conexión de fábrica y de destino (cola) Recursos JMS en el control remoto y el local glassfish instancias.

    1) Establecer la conexión jms propiedad de fábrica «addressList»

    Clientes en la consola de administración de glassfish ir a Resources->JMS Resources->Connection Factories->jms/YourConnectionFactory->Additional Properties

    Agregar una propiedad adicional con el nombre de addressList y valor XX.XX.XX.XX:AAAA
    donde el valor es la dirección IP de la máquina remota y el número de puerto que el de JMS servicio se está ejecutando.

    o

    2) Configurar el cliente de glassfish Java Message Service para conectar el control remoto de glassfish

    Clientes en la consola de administración de glassfish ir aConfigurations->server-config->Java Message Service

    • Conjunto de JMS Tipo de Servicio: mando a distancia (haga clic en guardar)
    • Conjunto de JMS Hosts->default_JMS_host Dirección IP y puerto de la Dirección IP y el puerto de la glassfish remoto JMS servicio

    He probado las dos opciones para trabajar con Glassfish 4. Espero que ayude.

    OriginalEl autor Stewart Evans

  3. 4

    Yo no tengo experiencia con Glassfish, pero este escenario no funciona con JBoss (que integra JBossMQ), y debe ser de aplicación general así:

    Servidor:

    • De configuración del servidor: Crear la cola, y se unen a un nombre, a ser visible en JNDI
    • De configuración del servidor: asegúrese de que la conexión de la fábrica es visible en JNDI así

    Cliente:

    • Búsqueda de la fábrica de conexiones y la cola usando JNDI. Esta, posiblemente, requiere algunos de los valores que se ponen en las propiedades de la InitialContext
    • En la parte superior de la conexión de la fábrica y la cola, se puede construir el resto de objetos (la conexión de la cola/sesión/receptor).

    Como para JBoss se parece a esto:

        final Properties initialContextProperties = new Properties();
        initialContextProperties.put("java.naming.factory.initial",
                "org.jnp.interfaces.NamingContextFactory");
        initialContextProperties.put("java.naming.provider.url",
                "jnp://localhost:1099");
    
        //
    
        final InitialContext ic = new InitialContext(initialContextProperties);
    
        final QueueConnectionFactory qcf = (QueueConnectionFactory) ic
                .lookup("XAConnectionFactory");
        final Queue queue = (Queue) ic.lookup("queue/A");

    Por lo que el corredor/agente de ir a través de JNDI.

    OriginalEl autor Beryllium

Dejar respuesta

Please enter your comment!
Please enter your name here