package org.kisst.gft.admin.status; import org.kisst.gft.GftWrapper; import org.kisst.gft.admin.ListenerServlet; import org.kisst.jms.JmsUtil; import org.kisst.jms.MultiListener; import javax.jms.*; import java.io.PrintWriter; import java.util.Enumeration; public class QueueStatus extends StatusItem { private final String queuename; private final String url; private final MultiListener listener; public QueueStatus(GftWrapper wrapper, MultiListener listener, String queuename) { super(wrapper, listener.getQueue(queuename).substring(listener.getQueue(queuename).lastIndexOf('/')+1)); this.url=listener.getName()+"/"+queuename; this.queuename=queuename; this.listener=listener; } public String getUrl() { return url; } @Override public void writeDetails(PrintWriter out) { super.writeDetails(out); ListenerServlet.writeQueueMessages(out, listener, queuename); } @Override public void refresh() { this.problemCount=countMessages(); } @Override public String getMessage() { return problemCount+" messages in queue"; } public int countMessages() { Session session=null; try { session = listener.getQueueSystem().getConnection().createSession(true, Session.AUTO_ACKNOWLEDGE); String q=listener.getQueue(queuename); Queue destination = session.createQueue(q); QueueBrowser browser = session.createBrowser(destination); Enumeration<?> e = browser.getEnumeration(); int count=0; while (e.hasMoreElements()) { count++; Message msg = (Message) e.nextElement(); } return count; } catch (JMSException e) { throw JmsUtil.wrapJMSException(e); } finally { try { if (session!=null) session.close(); } catch (JMSException e) { throw JmsUtil.wrapJMSException(e); } } } }