Problema no envio de jms

5 respostas
M

Pessoal,

tenho esse código que esta fazendo a comunicação certa com o jboss.

ConnectionFactory connectionFactory = null;
		Destination destination = null;
		Connection connection = null;
		Properties prop = new Properties();
		prop.put("java.naming.factory.initial",
				"org.jnp.interfaces.NamingContextFactory");
		prop.put("java.naming.provider.url", "jnp://localhost:1099");
		prop.put("java.naming.factory.url.pkgs",
				"org.apache.naming:org.jboss.naming:org.jnp.interfaces");
		connectionFactory = getConnectionFactory(prop);
		destination = getDestination(prop);
		connection = connectionFactory.createConnection();
		session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
		MessageConsumer consumer = session.createConsumer(destination);
		consumer.setMessageListener(this);
		connection.start();

	}

esse código acima é o cunsumidor e o de baixo é o do produtor.

Properties prop = new Properties();
			prop.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
			prop.put("java.naming.provider.url","jnp://localhost:1099");
			prop.put("java.naming.factory.url.pkgs", "org.apache.naming:org.jboss.naming:org.jnp.interfaces");
			connectionFactory = getConnectionFactory(prop);
			destination = getDestination(prop);
			connection = connectionFactory.createConnection();
			session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
			File file = new File("c:\\template\\mensagem.xml");
			FileReader fr = new FileReader(file);
			BufferedReader br = new BufferedReader(fr);
			String line = "";
	        String fim = "";
	        while (fim != null) {
	            fim = br.readLine();
	            if (fim != null) {
	                line += fim;
	            }
	        }
	        TextMessage message = session.createTextMessage(line);
			MessageProducer producer = session.createProducer(destination);

			producer.send(message);

			 
		} finally {
			try {
				session.close();
			} catch (Exception e) {
			}
			try {
				connection.close();
			} catch (Exception e) {
			}
		}
	}

o consumido ele roda e fica escutando a fila, só que quando eu rodo o produtor ele me retorna um erro no consumidor:

WARN org.jboss.mq.SpyMessageConsumer  - Message listener br.seguranca.siabm.queue.Listener@15a8767 threw a throwable.

Alguém sabe o que é e como resolvo isso?

5 Respostas

B

Você está utilizando JAAS tbm ? Poste sua stack trace completa para o pessoal poder te ajudar…

M

Pessoal,

eu consegui resolver o envio do jms, quer dizer a comunicação com o jboss está sendo feita, a mensagem está sendo consumida, o problema é que quando a mensagem está sendo consumida ela ta vindo no formato SpyTextMessage e eu preciso que ela fique em no formato Message. Alguém sabe como eu faço um cast entre esses dois tipo?

B

Message é uma abstração, você deve trabalhar com seus implementadores: TextMessage , ObjectMessage, MapMessage… Criados através do seu session…E no
seu listener fazer um cast para o implementador correto…

M

Bom dia breno500as,

Entendi. Só que, o que eu preciso é fazer um cast para um objeto do sistema. Então, no código abaixo é que não consigo fazer esse cast:

public void onMessage(Message msg) {
ObjectMessage message = (ObjectMessage) msg;
}

depois que recebe msg como ObjectMessage eu não sei como fazer um cast para o objeto que eu realmente vou trabalhar. Você pode me ajudar.

agradeço!

B

Tenta assim:

public  void onMessage(Message msg) {  
 
   ObjectMessage message = (ObjectMessage) msg;  
   MeuObjeto meuObjeto = (MeuObjeto) message.getObject();

 }
Criado 31 de março de 2010
Ultima resposta 1 de abr. de 2010
Respostas 5
Participantes 2