Я создал JMS Connection Factory на удаленном сервере 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.
Любые идеи?
Ваше здоровье,
Джеймс