Caros,
estou tentando entender como funciona jms
e peguei um exemplo mas não estou conseguindo fazer
funcionar.
Está me dando o erro abaixo :
Exception in thread "main" javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:645)
	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
	at javax.naming.InitialContext.getURLOrDefaultInitCtx(InitialContext.java:325)
	at javax.naming.InitialContext.lookup(InitialContext.java:392)
	at EnviaFila.main(EnviaFila.java:11)O que fiz até agora :
- inicializei o Jboss
- e do Eclipse estou tentado enviar e receber mensagens através de classes
O que estou fazendo de errado se alguém puder me ajudar …
agradeço…
abs
--jndi.properties
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost
--Assina
public class Assina {
    public static void main(String[] args) throws NamingException, JMSException {
                
        // obtém referências ao TopicConnectionFactory e à fila via JNDI        
        Context jndiContext = new InitialContext();
        TopicConnectionFactory connectionFactory = 
            (TopicConnectionFactory)jndiContext.lookup("ConnectionFactory"); 
        Topic topic = (Topic)jndiContext.lookup("topic/testTopic");
        // conecta à fila e inicia uma sessão
        TopicConnection connection = 
            connectionFactory.createTopicConnection();
        TopicSession session = connection.createTopicSession(false, 
            Session.AUTO_ACKNOWLEDGE);
        
        // recebe mensagens
        TopicSubscriber subscriber = session.createSubscriber(topic);
        connection.start();
        while (true) {
            TextMessage message = (TextMessage)subscriber.receive(1);
            if (message != null)
                System.out.println("Recebi: " + message.getText());
            }
        // libera recursos
        //subscriber.close();
        //session.close();        
        //connection.close();
    }
}
--
public class AssinaAssincrono {
    private class RecebeUmaMensagem implements MessageListener {
        public void onMessage(Message msg) {
           try {
               TextMessage message = (TextMessage)msg;
               if (message != null)
                   System.out.println("Recebi: " + message.getText());
           }
           catch (JMSException e) {
               System.out.println("Erro ao receber mensagem:" + e);
               e.printStackTrace();
           }
        }
    };
    public AssinaAssincrono() throws NamingException, JMSException {
                
        // obtém referências ao QueueConnectionFactory e à fila via JNDI        
        Context jndiContext = new InitialContext();
        TopicConnectionFactory connectionFactory = 
            (TopicConnectionFactory)jndiContext.lookup("ConnectionFactory"); 
        Topic topic = (Topic)jndiContext.lookup("topic/testTopic");
        // conecta à fila e inicia uma sessão
        TopicConnection connection = 
            connectionFactory.createTopicConnection();
        TopicSession session = connection.createTopicSession(false, 
            Session.AUTO_ACKNOWLEDGE);
        
        // recebe mensagens
        TopicSubscriber subscriber = session.createSubscriber(topic);
        subscriber.setMessageListener(new RecebeUmaMensagem());
        connection.start();
        // libera recursos
        //subscriber.close();
        //session.close();        
        //connection.close();
    }
    public static void main(String[] args) throws
            NamingException, JMSException, InterruptedException {
            
        new AssinaAssincrono();
        while (true)
            Thread.sleep(10000);
    }
}
--
public class Publica {
    public static void main(String[] args) throws NamingException, JMSException {
        // obtém referências ao QueueConnectionFactory e à fila via JNDI        
        Context jndiContext = new InitialContext();
        TopicConnectionFactory connectionFactory =
            (TopicConnectionFactory)jndiContext.lookup("ConnectionFactory");
        Topic topic = (Topic)jndiContext.lookup("topic/testTopic");
        // conecta ao tópico e inicia uma sessão
        TopicConnection connection =
            connectionFactory.createTopicConnection();
        TopicSession session = connection.createTopicSession(false, 
            Session.AUTO_ACKNOWLEDGE);
            
        // publica uma única mensagem
        TopicPublisher publisher = session.createPublisher(topic);
        TextMessage message = session.createTextMessage();
        message.setText("Oi via JMS");
        publisher.send(message);
        //publisher.publish(message);
        // libera recursos
        publisher.close();
        session.close();        
        connection.close();
    }
}
--
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/testQueue");
        // 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
        //sender.close();
        //session.close();        
        //connection.close();
    }
}