[Ajuda] Como consigo testar meu exemplo JMS?

1 resposta
InsaneChess

Prezados,
Eu andei lendo alguns tutoriais na internet…e no final montei as seguintes 2 classes e 1 arquivo de configuração de fila na pasta Deploy do Jboss:

Tenho duas dúvidas.
1- O arquivo XML está correto?
2- Como diabos consigo testar isso? As classes precisam estar rodando em um servidor Web…E em um server web não é possível executar o Main. Correto?

Valew!!!

Para enviar uma mensagem:

import javax.jms.JMSException;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;


 

public class EnviaFila {

  public static void main(String[] args)

      throws NamingException, JMSException

  {

    // obtém referências ao QueueConnectionFactory e à fila via JNDI   

    Context jndiContext = new InitialContext();

    QueueConnectionFactory connectionFactory =

       (QueueConnectionFactory)jndiContext.lookup("ConnectionFactory");

    Queue queue = (Queue)jndiContext.lookup("queue/minhaFila");

 

    // conecta à fila e inicia uma sessão

    QueueConnection connection =

       connectionFactory.createQueueConnection();

    QueueSession session = connection.createQueueSession(false,

       Session.AUTO_ACKNOWLEDGE);

     

    // envia uma única mensagem de texto

    QueueSender sender = session.createSender(queue);

    TextMessage message = session.createTextMessage();

    message.setText("Oi via JMS");

    sender.send(message);

 

    // libera recursos

    sender.close();

    session.close();   

    connection.close();

  }

}

Para ler a mensagem e exibir no console pra me deixar feliz:

import javax.jms.*;

import javax.naming.*;

public class RecebeFila {

	public static void main(String[] args)

	throws NamingException, JMSException

	{

		// obtém referências ao QueueConnectionFactory e à fila via JNDI

		Context jndiContext = new InitialContext();

		QueueConnectionFactory connectionFactory =

		(QueueConnectionFactory) jndiContext.lookup("ConnectionFactory");

		Queue queue = (Queue) jndiContext.lookup("queue/minhaFila");

		// conecta à fila e inicia uma sessão

		QueueConnection connection =

		connectionFactory.createQueueConnection();

		QueueSession session = connection.createQueueSession(false,

		Session.AUTO_ACKNOWLEDGE);

		// recebe mensagens

		QueueReceiver receiver = session.createReceiver(queue);

		connection.start();

		while (true) {

			TextMessage message = (TextMessage) receiver.receive(1);

			if (message != null)

				System.out.println("Recebi: " + message.getText());

		}

		// libera recursos no encerramento da JVM

	}

}
minhaFila-Service.xml (Na pasta deploy do Jboss)
name="jboss.mq.destination:service=Queue,name=minhaFila">
jboss.mq:service=DestinationManager
jboss.mq:service=SecurityManager
-1

1 Resposta

InsaneChess

Ninguém? =/
Segue o erro quando tento rodar um WebService com as classes acima:
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: javax.naming.NameNotFoundException: minhaFila not bound
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}hostname:meta-035663b242

Criado 21 de dezembro de 2011
Ultima resposta 23 de dez. de 2011
Respostas 1
Participantes 1