jms服务器用的是什么?说说你的环境

解决方案 »

  1.   

    服务器用的是weblogic8.1, 服务应该是配好的,用另一个类发布消息,再用同步接收是没问题的,异步就没什么反应,接收不到,请指点
      

  2.   

    当用这个文件发布消息时,用步接收是可以实现的
    package  com.ctele.test;import java.rmi.RemoteException;
    import java.util.Properties;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    import javax.jms.Topic;
    import javax.jms.TopicConnection;
    import javax.jms.TopicConnectionFactory;
    import javax.jms.TopicPublisher;
    import javax.jms.TopicSession;
    import javax.ejb.CreateException;
    import javax.ejb.RemoveException;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.rmi.PortableRemoteObject;public class MdbPublishClient{
      static private String TOPIC_NAME = "JMSTopic";
      private String m_url;
      private Context m_context;
      private TopicConnection m_topicConnection;
      public MdbPublishClient(String url) throws NamingException
      {
        m_url = url;
        try{
          //初始化上下文
          m_context = getInitialContext();
          //查找连接工厂
          TopicConnectionFactory cf = (TopicConnectionFactory)m_context.lookup("JMSConnFactory");
          m_topicConnection = cf.createTopicConnection();
          m_topicConnection.start();
        }
        catch(Exception ex) {
          ex.printStackTrace();
        }
      }  public void example()throws RemoteException, JMSException, NamingException
      {
        Topic newTopic = null;
        TopicSession session = null;
        try {
          session = m_topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
          newTopic = (Topic) m_context.lookup(TOPIC_NAME);
        }
        catch(NamingException ex) {
          newTopic = session.createTopic(TOPIC_NAME);
          m_context.bind(TOPIC_NAME, newTopic);
        }    TopicPublisher sender = session.createPublisher(newTopic);
        TextMessage tm = session.createTextMessage();
        String[] quotes = new String[] {"BEAS 40 1/8", "SUNW 79 1/2", "IBM 82 1/4", "Hello !"};
        for (int i = 0; i < quotes.length; i++) {
          tm.setText(quotes[i]);
          sender.publish(tm);
        }
        m_topicConnection.close();
      }  private Context getInitialContext() throws NamingException {
        try {
          // Get an InitialContext
          Properties h = new Properties();
          h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
          h.put(Context.PROVIDER_URL, m_url);
          return new InitialContext(h);
        }
        catch (NamingException ex) {
          throw ex;
        }
      }  public static void main(String[] args) throws Exception {
        String url = "t3://localhost:7001";
        MdbPublishClient client = null;
        try {
          client = new MdbPublishClient(url);
        } catch (NamingException ne) {
          System.exit(1);
        }
        try {
          client.example();
        }
        catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
      

  3.   

    用createDurableSubscriber创建一个持久订阅者不要用createSubscriber试试?
    createSubscriber异步时可能收不到消息的