TopicConnectionFactory factory =
  (TopicConnectionFactory)
   ctx.lookup("ConnectionFactory"); //出现异常

解决方案 »

  1.   

    我给我具体的例子你看看吧:
    package com.bj.test.ejb.session;import javax.ejb.SessionBean;
    import javax.ejb.SessionContext;
    import javax.ejb.CreateException;
    import java.rmi.RemoteException;
    import javax.jms.*;
    import javax.naming.*;public class TestSessionBean
        implements SessionBean
    {
      final static String QUEUE_CONNECTION_FACTORY_JNDI = "XAConnectionFactory";
      final static String QUEUE_JNDI = "queue/testQueue";  SessionContext sessionContext;
      public void ejbCreate() throws CreateException {
      }  public void ejbRemove() {
      }  public void ejbActivate() {
      }  public void ejbPassivate() {
      }  public void setSessionContext(SessionContext sessionContext) {
        this.sessionContext = sessionContext;
      }  public void msgSend(String id,String name) throws RemoteException
      {
        Context jndiContext = null;    QueueConnectionFactory queueConnectionFactory = null;
        QueueConnection queueConnection = null;
        QueueSession queueSession = null;
        Queue queue = null;
        QueueSender queueSender = null;
        MapMessage message = null;    try
        {
          jndiContext = new InitialContext();      queueConnectionFactory = (QueueConnectionFactory) jndiContext.lookup(
              QUEUE_CONNECTION_FACTORY_JNDI);
          queue = (Queue) jndiContext.lookup(QUEUE_JNDI);      queueConnection = queueConnectionFactory.createQueueConnection();
          queueSession = queueConnection.createQueueSession(false,
              Session.AUTO_ACKNOWLEDGE);
          queueSender = queueSession.createSender(queue);
          message = queueSession.createMapMessage();
          message.setString("ID", id);
          message.setString("NAME", name);      queueSender.send(message);
        }
        catch (NamingException e)
        {
          e.printStackTrace(System.out);
        }
        catch (JMSException e)
        {
          e.printStackTrace(System.out);
        }
        finally
        {
          if (queueConnection != null)
          {
            try
            {
              queueSession.close();
              queueConnection.close();
            }
            catch (JMSException e) {}
          }
        }  }
    }
    其中,final static String QUEUE_CONNECTION_FACTORY_JNDI = "XAConnectionFactory";
      final static String QUEUE_JNDI = "queue/testQueue";
    是jboss中已经配置好的了