У меня есть приложение EJB
, работающее на сервере Glassfish
, которое хранит данные в MySQL
БД, которую я называю глобальной БД. У меня есть два удаленных приложения Swing, которые являются автономными приложениями, обращающимися к EJB's
с помощью RMI
. У них есть своя локальная БД на случай потери связи.
Моя цель — реализовать двухэтапный протокол фиксации, то есть сделать одного участника координатором, а других — участниками.
Один из методов, который я мог придумать, заключался в реализации с использованием JMS
, то есть отправки сообщения через очередь и заставить удаленных клиентов прослушивать эти сообщения и предпринимать соответствующие действия. Я делаю это, отправляя сообщение о нажатии кнопки одного из приложений Swing. Проблема в том, что даже жесткий метод MessageListener
, onMessage()
не получает никакого сообщения для другого клиента.
Для каждого удаленного клиента установлены следующие свойства:
props.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
props.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
props.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
Это нужно для подключения к серверу Glassfish
и доступа к connectionFactory
и Queue
, которые я уже настроил.
Это потому, что только приложения, работающие на сервере, могут получать сообщения, а не удаленные приложения?
Приветствуются любые предложения по топологии для 2 ПК.