2017-07-21 243 views
0

當我運行以下代碼時,似乎消息已發送到隊列,但我在隊列中看不到任何東西。沒有錯誤,例外durig執行我的代碼。發送消息給JMS(Weblogic)

我使用Weblogic服務器。

這是我的代碼:

private InitialContext getInitialContext() throws NamingException { 
    Hashtable env = new Hashtable(); 
    env.put(InitialContext.INITIAL_CONTEXT_FACTORY, contextFactory); 
    env.put(InitialContext.PROVIDER_URL, providerUrl); 
    env.put(Context.SECURITY_PRINCIPAL, username); 
    env.put(Context.SECURITY_CREDENTIALS, password); 
    return new InitialContext(env); 
} 

public ConnectionFactory getConnectionFactory(InitialContext context) throws NamingException { 
    return (ConnectionFactory) context.lookup(ConnectionParameter.JMS_CONNECTION_FACTORY_JNDI); 
} 

public void send() throws NamingException, JMSException { 
    InitialContext context = getInitialContext(); 
    Destination destination = (Destination) context.lookup("jms/dpdr/mhcinterface/arnoldQueue"); 

    try (Connection connection = getConnectionFactory(context).createConnection();){ 
     Session session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE); 
     MessageProducer sender = session.createProducer(destination); 
     Message message = session.createTextMessage("work order complete!"); 
     sender.send(message); 
     session.commit(); 
     session.close(); 
    } 
    context.close(); 

    System.out.println("-- end --"); 
} 

任何想法,這裏有什麼問題嗎?

回答

0

看起來你忘了在發送消息之前調用connection.start()。你可以這樣做:

MessageProducer sender = session.createProducer(destination); 
connection.start(); 
Message message = session.createTextMessage("work order complete!");