J'ai créé une fabrique de connexions JMS sur un serveur glassfish distant et souhaite utiliser ce serveur à partir d'une application cliente java sur ma machine locale. J'ai la configuration suivante pour obtenir le contexte et l'usine connexion:Connexion JMS distante utilisant toujours localhost
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();
Cela semble fonctionner et quand je supprime le ConnectionFactory du serveur GlassFish je reçois une exception indiquant ce qui est ne peut pas trouver jms/MyConnectionFactory comme prévu .
Cependant, lorsque j'utilise par la suite mon topicConnection
pour obtenir un sujet, il essaie de se connecter à localhost: 7676 (cela échoue car je ne suis pas en train d'exécuter glassfish localement).
Si je crée dynamiquement un sujet:
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);
et le serveur GlassFish ne fonctionne pas je reçois localement la même connexion a refusé cependant, si je commence mon serveur GlassFish local, les sujets sont créés localement et je peux voir eux dans la console d'administration glassfish.
Si vous demandez que je n'ai pas jms/MyConnectionFactory sur mon instance locale de glassfish, il n'est disponible que sur le serveur distant.
Je ne vois pas ce que je fais de mal ici et pourquoi il essaie d'utiliser localhost du tout.
Des idées?
Cheers,
James
Merci pour l'aide. J'ai ajouté AddressList sur mon ConnectionPoolFactory maintenant j'obtiens l'erreur suivante: org.omg.CORBA.COMM_FAILURE: vmcid: Code mineur de SUN: 201 accompli: Non Des idées? – James
Plus d'infos, je peux maintenant voir les sujets dynamiques sur les pages d'administration du serveur glassfish distant mais seulement si je cours une instance locale de glassfish. Sans la version locale en cours d'exécution, j'obtiens l'exception de mon précédent commentaire. – James
J'ai eu ce problème avec un serveur 3.1.2.2 Glassfish et je suis prêt à crier. J'ai construit un client distant avec le gf-client.jar et le appclient.jar que j'ai construit suite à la suggestion d'Oracle à http://docs.oracle.com/cd/E26576_01/doc.312/e24930/java-clients.htm# gkuqa. J'ai suivi les suggestions d'Arnoud et vos suggestions. Il semble se connecter à l'hôte/port correct mais j'obtiens une étrange NumberFormatException: AVERTISSEMENT: [C4003]: Une erreur s'est produite lors de la création de la connexion [10.20.10.207:3700]. - cause: java.lang.NumberFormatException: Pour la chaîne d'entrée :. Des idées pourquoi? – kpenrose