Olá Pessoal,
Estou implementando uma aplicação que “conversará” com o Provider mq do Jboss via JMS.Tenho uma classe que implementa MessageListener responsável por receber e processar as mensagems quando elas chegarem ao servidor.Quando eu rodo ela por dentro do Eclipse funciona tudo ok,mas depois de compilá-la com o javac/ant ,colocar os .jar do jms junto com a aplicação o código desta classe simplesmente não é executado(tenho certeza por causa dos logs que ficam em branco).
Quando rodo com o javaw <nomedaclasse> não dá erro algum,mas também não é rodado o main que vai registrar o meu listener no application server.
O código (resumido) da minha classe segue abaixo.
Alguém tem alguma dica ? Qualquer sugestão é bem vinda.
Obrigado !
[]´s
Júlio César
[email removido]
import java.util.*;
import javax.jms.<em>;
import javax.naming.</em>;
import javax.naming.directory.*;
public class VerificarResultado {
/**
* Onde tudo começa.
* @param args Argumentos vindo da linha de comando.
* O voto deve ser passado como argumento
*/
public static void main(String[] args) {
new VerificarResultado();
}
/**
* Constutor vazio. Todo o processo está aqui dentro.
* */
public VerificarResultado() {
try {
/**
* Nessa parte temos a criação das propriedades para o JNDI.
* Caso você prefira essas configurações poderão ficar em um arquivo
* jndi.properties, e o mesmo deve ficar no CLASSPATH.
*
* Para distribuir sua aplicação entre os clientes, lembre-se de trocar
* o IP.
*/
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
env.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1099");
/**
* Inicie o contexto com as propriedades definidas acima.
* */
Context jndiContext = new InitialContext(env);
/**
* Faz a busca pelo Connection Factory e o Destination apropriado.
* Para o JBoss o objeto CF configurado é o ConnectionFactory.
* O Destination usado será aquele criado na preparação do exerício.
* Note que o JBoss referência o dominio com um "queue/" antes do Destination.
* */
TopicConnectionFactory topicConnectionFactory = (TopicConnectionFactory) jndiContext.lookup("ConnectionFactory");
Topic topic = (Topic) jndiContext.lookup("topic/MyTopic");
/**
* Cria a conexão.
* Cria a sessão setando o parâmetro de transação para falso e deixando
* que o Provider comunique o recebimento da mensagem automaticamente.
* Cria o objeto de envio, Sender.
* Obtemos a mensagem (ObjectMessage) e setamos o objeto a ser enviado.
* Por fim enviamos.
* */
TopicConnection topicConnection = topicConnectionFactory.createTopicConnection("john", "needle");
TopicSession topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
TopicSubscriber topicSubscriber = topicSession.createDurableSubscriber(topic,"U2" + System.getProperty("user.name"));
EsperarResultado topicListener = new EsperarResultado();
topicSubscriber.setMessageListener(topicListener);
topicConnection.start();
try {
Thread.sleep(10);
} catch (InterruptedException ie) {
}
/**
* Fecha a conexão para liberar os recursos
*/
topicConnection.close();
jndiContext.close();
} catch (NamingException e) {
System.out.println("Não foi possível criar o contexto JNDI: " + e.toString());
System.exit(1);
} catch (JMSException e) {
System.out.println("Não foi possível criar o contexto JNDI: " + e.toString());
System.exit(1);
}
}
}
P.S.-> já copiei os jars pada dentro do jsdk/lib,já setei JAVA_HOME,CLASSPATH,J2EEHOME, tudo sem sucesso :-((