weblogic jms 新手提问 大家看看有什么问题? 还有就是为什么当队列中无任何消息时,接受消息的这个类一直运行着
package com.baihe.jms.gys;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.Context;
import javax.naming.InitialContext;
import com.baihe.entity.Gys;
public class GysQueueReceiver2 implements MessageListener {
boolean find = true;
QueueReceiver queueReceiver = null;
Queue queue = null;
QueueConnectionFactory tcf = null;
QueueConnection tc = null;
QueueSession ts = null;
List list = new ArrayList();
List list1 = new ArrayList();
public GysQueueReceiver2() {
try {
String m_url = "t3://192.168.1.100:7001";
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, m_url);
Context jndiContext = new InitialContext(h);
tcf = (QueueConnectionFactory) jndiContext
.lookup("ConnectionFactory_SGM_GYS");
queue = (Queue) jndiContext.lookup("Queue_SGM_GYS");
tc = (QueueConnection) tcf.createQueueConnection();
ts = tc.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
queueReceiver = ts.createReceiver(queue);
queueReceiver.setMessageListener(this);
tc.start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void close() throws JMSException {
queueReceiver.close();
ts.close();
tc.close();
}
@SuppressWarnings("unchecked")
public static void main(String[] a) {
GysQueueReceiver2 jt = new GysQueueReceiver2();
jt.getMessage();
for (Iterator iter = jt.getList().iterator(); iter.hasNext();) {
Gys element = (Gys) iter.next();
System.out.println("for" + element.getGysmc());
}
for (Iterator iter = jt.getList1().iterator(); iter.hasNext();) {
String element = (String) iter.next();
System.out.println("for" + element);
}
}
public boolean getMessage() {
boolean flag = false;
try {
while (find) {
Thread.sleep(1000);
}
flag = true;
tc.close();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (JMSException e) {
e.printStackTrace();
}
return flag;
}
public void onMessage(Message message) {
try {
String MessageText = null;
if (message instanceof TextMessage) {
MessageText = ((TextMessage) message).getText();
list1.add(MessageText);
} else if (message instanceof ObjectMessage) {
Gys obj = (Gys) ((ObjectMessage) message).getObject();
MessageText = obj.getGysmc();
System.out.println("监听到消息:" + MessageText);
list.add(obj);
find = false;
}
} catch (Exception e) {
e.printStackTrace();
}
}
public List getList() {
return list;
}
public List getList1() {
return list1;
}
}