weblogic jms 新手提问 大家看看有什么问题? 还有就是为什么当队列中无任何消息时,接受消息的这个类一直运行着

lgl_0422 2009-09-01 09:44:29
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;
}
}
...全文
46 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lgl_0422 2009-09-02
  • 打赏
  • 举报
回复
我自己搞定了
lgl_0422 2009-09-01
  • 打赏
  • 举报
回复
怎么没人理我啊
bjtang 2009-09-01
  • 打赏
  • 举报
回复
wo bu dong a

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧