Создание удаленного получателя для очереди JMS в автономном приложении

У меня есть реализация JMS (производитель и потребитель) на моем сервере Glashfish 4. Код потребителя работает, когда я выполняю как appclient в glashfish.

Producer.java

@Resource(lookup = "java:comp/DefaultJMSConnectionFactory")
private static ConnectionFactory connectionFactory;
@Resource(lookup = "jms/MyQueue")
private static Queue queue;
...
JMSContext context = connectionFactory.createContext();
context.createProducer().send((Destination) queue, message);

Consumer.java

@Resource(lookup = "java:comp/DefaultJMSConnectionFactory")
private static ConnectionFactory connectionFactory;
@Resource(lookup = "jms/MyQueue")
private static Queue queue;

...
JMSConsumer consumer;
JMSContext context = connectionFactory.createContext();
consumer = context.createConsumer((Destination) queue);
Message m = consumer.receive(1000);

Мне нужно сделать потребительское удаленное автономное Java-приложение.

На моем сервере Glassfish я отредактировал свойства фабрики соединений JMS и добавил свойство addressList со значением xxxx:xxxx

Есть идеи?

1 ответ

Сначала в папке lib вашего автономного java-приложения скопируйте файл gf-client.jar. Расположение этого файла - your_glassfish_installation_directory/glassfish/lib.

Код

Properties props = new Properties();

props.setProperty("java.naming.factory.initial",
        "com.sun.enterprise.naming.SerialInitContextFactory");



// optional.  Defaults to localhost.  Only needed if web server is running
// on a different host than the appserver   
props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");

// optional.  Defaults to 3700.  Only needed if target orb port is not 3700.
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
InitialContext ic = new InitialContext(props);
QueueConnectionFactory cf =  (QueueConnectionFactory)ic.lookup("jms/MyConnectionFactory");
Queue queue =(Queue)ic.lookup("jms/queue");
Другие вопросы по тегам