Я создал фабрику соединений JMS на удаленном сервере Glassfish и хочу использовать этот сервер из клиентского приложения java на моем локальном компьютере. У меня есть следующая конфигурация, чтобы получить контекст и фабрику соединений:
Properties env = new Properties();
env.setProperty("java.naming.factory.initial", "com.sun.enterprise.naming.SerialInitContextFactory");
env.setProperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming");
env.setProperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl");
env.setProperty("org.omg.CORBA.ORBInitialHost", JMS_SERVER_NAME);
env.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
initialContext = new InitialContext(env);
TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) initialContext.lookup("jms/MyConnectionFactory");
topicConnection = topicConnectionFactory.createTopicConnection();
topicConnection.start();
Кажется, это работает, и когда я удаляю ConnectionFactory с сервера Glassfish, я получаю исключение, указывающее, что не может найти jms / MyConnectionFactory, как ожидалось.
Однако, когда я впоследствии использую мой topicConnection
, чтобы получить тему, он пытается подключиться к localhost: 7676 (это не удается, поскольку я не использую Glassfish локально).
Если я динамически создаю тему:
TopicSession pubSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic topic = pubSession.createTopic(topicName);
TopicPublisher publisher = pubSession.createPublisher(topic);
Message mapMessage = pubSession.createTextMessage(message);
publisher.publish(mapMessage);
и сервер Glassfish не работает локально. Однако при получении того же соединения отказывается, однако, если я запускаю свой локальный сервер Glassfish, темы создаются локально, и я вижу их в консоли администратора Glassfish.
Если вы спросите, у меня нет jms / MyConnectionFactory на локальном экземпляре glassfish, он доступен только на удаленном сервере.
Я не вижу, что я делаю здесь неправильно и почему он вообще пытается использовать localhost.
Есть идеи?
Приветствия
Джеймс