Boa tarde pessoal,
Seguinte, estou tentando fazer lookup de um EJB remoto em um servidor GlassFish 3.1.2.2 (build 5). O código do cliente é o seguinte:
Properties props = new Properties();
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", "192.168.1.18");
props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
InitialContext ic = new InitialContext(props);
ConnectionFactory cnf = (ConnectionFactory) ic.lookup("jms/TopicFactory");
TopicConnection tconn = (TopicConnection)cnf.createConnection();
Topic topic = (Topic) ic.lookup("jms/Topic");
TopicSession tseSession = tconn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
TopicSubscriber ts = tseSession.createSubscriber(topic);
ts.setMessageListener(new MessageListener() {
public void onMessage(Message message) {
try {
System.out.println(((TextMessage) message).getText());
} catch (JMSException ex) {
System.out.println("## error");
}
}
});
tconn.start();
maven dependências
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.messaging.mq</groupId>
<artifactId>imqbroker</artifactId>
<version>4.5.1-b03</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.main.extras</groupId>
<artifactId>glassfish-embedded-all</artifactId>
<version>3.1.2.2</version>
</dependency>
</dependencies>
Então, quando eu executo esse código na mesma maquina onde o container está rodando, tudo funciona normalmente. Porém quando executo o mesmo código em outra maquina, ele trava fazendo o lookp, sem apresentar erro algum, apenas fica parado no primeiro lookup. Já tentei alterar esse código para fazer o lookup de um EJB dentro de uma aplicação que criei ao invés do Factory JMS, e acontece a mesma coisa.
Alguém sabe se esse é algum problema de permissão de acesso externo ou alguma coisa que tenha mudado nas novas versões do glassfish? Habilitei os logs do corba no glassfish e tudo indica que a conexão está chegando:
Mas a aplicação cliente não é executada. Lembro que já construí esse tipo de cenário antes, com versões anteriores do glassfish, mas não lembro de ter enfrentado esse problema.
Agradeço a ajuda.