Создание удаленного получателя для очереди 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");