[jboss-cvs] JBoss Messaging SVN: r6535 - in tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms: debug and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Apr 23 07:22:22 EDT 2009
Author: gaohoward
Date: 2009-04-23 07:22:22 -0400 (Thu, 23 Apr 2009)
New Revision: 6535
Added:
tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/
tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/ClientFailoverTracker.java
tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/DebugLogger.java
tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/JMSObjectTracker.java
tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/MessageTracker.java
tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/ServerFailoverTracker.java
tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/TrackerFactory.java
tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/WriterUtil.java
Log:
add debug util
Added: tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/ClientFailoverTracker.java
===================================================================
--- tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/ClientFailoverTracker.java (rev 0)
+++ tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/ClientFailoverTracker.java 2009-04-23 11:22:22 UTC (rev 6535)
@@ -0,0 +1,44 @@
+package org.jboss.jms.debug;
+
+public class ClientFailoverTracker {
+
+ private DebugLogger failoverJournal;
+
+ public ClientFailoverTracker(String name)
+ {
+ failoverJournal = new DebugLogger(name + "-client-failover-journal.log");
+ }
+
+ public synchronized void report(String string, Throwable reason, boolean dumpThread) {
+ failoverJournal.writeRecord(string);
+ if (reason != null) {
+ failoverJournal.writeRecord("--additional info: --");
+ dumpStackTrace(reason);
+ failoverJournal.writeRecord("--end additional info: --");
+ }
+ if (dumpThread) {
+ dumpThreadStackTrace();
+ }
+ }
+
+ private void dumpStackTrace(Throwable reason) {
+ failoverJournal.writeRecord("Exception: " + reason.getClass().getName());
+ failoverJournal.writeRecord("Message: " + reason.getMessage());
+ failoverJournal.writeRecord("Cause: " + reason.getCause());
+ failoverJournal.writeRecord("Stack: ");
+ StackTraceElement[] elems = reason.getStackTrace();
+ for (StackTraceElement ele : elems) {
+ failoverJournal.writeRecord(ele.toString());
+ }
+ }
+
+
+ private void dumpThreadStackTrace() {
+ StackTraceElement[] elems = Thread.currentThread().getStackTrace();
+ failoverJournal.writeRecord("--Thread trace begin--");
+ for (StackTraceElement ele : elems) {
+ failoverJournal.writeRecord(ele.toString());
+ }
+ failoverJournal.writeRecord("--Thread trace end--");
+ }
+}
Added: tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/DebugLogger.java
===================================================================
--- tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/DebugLogger.java (rev 0)
+++ tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/DebugLogger.java 2009-04-23 11:22:22 UTC (rev 6535)
@@ -0,0 +1,83 @@
+package org.jboss.jms.debug;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.jboss.logging.Logger;
+
+public class DebugLogger
+{
+ private SimpleDateFormat format = new SimpleDateFormat("MMdd-HH");
+ Logger errLog = Logger.getLogger(DebugLogger.class);
+
+ boolean inited = false;
+
+ public String logFileName;
+ public String fileRealPath;
+
+ public DebugLogger(String fname)
+ {
+ logFileName = fname;
+ }
+
+ private void init() {
+ if (inited) return;
+ String udir = System.getProperty("user.home");
+ File baseFile = new File(udir);
+
+// System.out.println("user dir: " + baseFile);
+
+ Date d = new Date();
+ String today = format.format(d);
+ String baseDir = "jms-" + today;
+
+ File dirFile = new File(baseFile, baseDir);
+
+ if (!dirFile.exists())
+ {
+ dirFile.mkdir();
+ }
+
+ File logFile = new File(dirFile, logFileName);
+ if (!logFile.exists())
+ {
+ try {
+ logFile.createNewFile();
+ System.out.println("file: " + logFile.getAbsolutePath());
+ } catch (IOException e) {
+ errLog.error("error logging debug info.", e);
+ }
+ }
+ fileRealPath = logFile.getAbsolutePath();
+ inited = true;
+ }
+
+ public synchronized void writeRecord(String rec) {
+ init();
+ PrintWriter writer;
+ try {
+ writer = WriterUtil.getWriter(fileRealPath);
+ String tid = Thread.currentThread().getName();
+ writer.println("[" + tid + "] " + rec);
+ writer.flush();
+ } catch (FileNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ public static void main(String[] args) throws IOException
+ {
+ DebugLogger logger = new DebugLogger("mylog");
+ logger.writeRecord("hello world!");
+
+ JMSObjectTracker tracker1 = new JMSObjectTracker("tracker1");
+
+ tracker1.connectionEvent("conn1", null, "test connection", false);
+ }
+
+}
Added: tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/JMSObjectTracker.java
===================================================================
--- tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/JMSObjectTracker.java (rev 0)
+++ tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/JMSObjectTracker.java 2009-04-23 11:22:22 UTC (rev 6535)
@@ -0,0 +1,331 @@
+package org.jboss.jms.debug;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+
+import javax.jms.Connection;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+
+public class JMSObjectTracker extends MessageTracker
+{
+
+ private Hashtable<String, ConnectionRecord> connRecords = new Hashtable<String, ConnectionRecord>();
+
+ private Hashtable<String, SessionRecord> sessRecords = new Hashtable<String, SessionRecord>();
+
+ private Hashtable<String, ProducerRecord> prodRecords = new Hashtable<String, ProducerRecord>();
+
+ private Hashtable<String, ConsumerRecord> csumRecords = new Hashtable<String, ConsumerRecord>();
+
+ private DebugLogger jmsJournal;
+
+ private ObjectCheckerThread oct;
+
+ public JMSObjectTracker(String name)
+ {
+ super(name, false);
+ jmsJournal = new DebugLogger(name + "-jms-journal.log");
+ }
+
+ public synchronized void startChecker() {
+ if (oct == null)
+ {
+ oct = new ObjectCheckerThread();
+ oct.start();
+ }
+ }
+
+ public void connectionEvent(String id, Connection conn, String event, boolean ifStore)
+ {
+ synchronized (connRecords)
+ {
+ ConnectionRecord rec = connRecords.get(id);
+ if (rec == null)
+ {
+ rec = new ConnectionRecord(id);
+ if (ifStore) {
+ connRecords.put(id, rec);
+ } else {
+ rec.addEvent("I've gone.");
+ }
+ }
+ rec.addEvent(event);
+ }
+ }
+
+ public void sessionEvent(String id, Session sess, String event, boolean ifStore)
+ {
+ synchronized (sessRecords)
+ {
+ SessionRecord rec = sessRecords.get(id);
+ if (rec == null)
+ {
+ rec = new SessionRecord(id);
+ if (ifStore) {
+ sessRecords.put(id, rec);
+ } else {
+ rec.addEvent("I've gone.");
+ }
+ }
+ rec.addEvent(event);
+ }
+ }
+
+ public void producerEvent(String id, MessageProducer producer, String event, boolean ifStore)
+ {
+ synchronized (prodRecords)
+ {
+ ProducerRecord rec = prodRecords.get(id);
+ if (rec == null)
+ {
+ rec = new ProducerRecord(id);
+ if (ifStore) {
+ prodRecords.put(id, rec);
+ } else {
+ rec.addEvent("I've gone.");
+ }
+ }
+ rec.addEvent(event);
+ }
+ }
+
+ public void consumerEvent(String id, MessageConsumer consumer, String event, boolean ifStore)
+ {
+ synchronized (csumRecords)
+ {
+ ConsumerRecord rec = csumRecords.get(id);
+ if (rec == null)
+ {
+ rec = new ConsumerRecord(id);
+ if (ifStore) {
+ csumRecords.put(id, rec);
+ } else {
+ rec.addEvent("I've gone.");
+ }
+ }
+ rec.addEvent(event);
+ }
+ }
+
+
+ private class ConnectionRecord extends EventRecord
+ {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6340399287030923659L;
+
+ public ConnectionRecord(String id) {
+ super(id);
+ }
+
+ public void addEvent(String event)
+ {
+ super.addEvent("[Connection] " + event, jmsJournal);
+ }
+ }
+
+ private class SessionRecord extends EventRecord
+ {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 2394409964154408680L;
+
+ public SessionRecord(String id) {
+ super(id);
+ }
+
+ public void addEvent(String event)
+ {
+ super.addEvent("[Session] " + event, jmsJournal);
+ }
+ }
+
+ private class ProducerRecord extends EventRecord
+ {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 3463680286818208126L;
+
+ public ProducerRecord(String id) {
+ super(id);
+ }
+
+ public void addEvent(String event)
+ {
+ super.addEvent("[Producer] " + event, jmsJournal);
+ }
+ }
+
+ private class ConsumerRecord extends EventRecord
+ {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 4285789136248342307L;
+
+ public ConsumerRecord(String id) {
+ super(id);
+ }
+
+ public void addEvent(String event)
+ {
+ super.addEvent("[Consumer] " + event, jmsJournal);
+ }
+ }
+
+ public void removeConnection(String id) {
+ synchronized (connRecords)
+ {
+ connRecords.remove(id);
+ }
+ }
+
+ public void removeSession(String id) {
+ synchronized (sessRecords)
+ {
+ SessionRecord sr = sessRecords.remove(id);
+ if (sr == null) {
+ jmsJournal.writeRecord("SessionCloseWired: " + id + " gets closed twice is now deemed normal.");
+ }
+ }
+ }
+
+ public void removeConsumer(String id) {
+ synchronized (csumRecords)
+ {
+ csumRecords.remove(id);
+ }
+ }
+
+ public void removeProducer(String id) {
+ synchronized (prodRecords)
+ {
+ prodRecords.remove(id);
+ }
+ }
+
+ private List<ConnectionRecord> getConnCopy()
+ {
+ synchronized (connRecords)
+ {
+ ArrayList<ConnectionRecord> records = new ArrayList<ConnectionRecord>();
+ Enumeration<ConnectionRecord> enuRec = connRecords.elements();
+ while (enuRec.hasMoreElements()) {
+ records.add(enuRec.nextElement());
+ }
+ return records;
+ }
+ }
+
+ private List<SessionRecord> getSessCopy()
+ {
+ synchronized (sessRecords)
+ {
+ ArrayList<SessionRecord> records = new ArrayList<SessionRecord>();
+ Enumeration<SessionRecord> enuRec = sessRecords.elements();
+ while (enuRec.hasMoreElements()) {
+ records.add(enuRec.nextElement());
+ }
+ return records;
+ }
+ }
+
+ private List<ConsumerRecord> getConsumerCopy()
+ {
+ synchronized (csumRecords)
+ {
+ ArrayList<ConsumerRecord> records = new ArrayList<ConsumerRecord>();
+ Enumeration<ConsumerRecord> enuRec = csumRecords.elements();
+ while (enuRec.hasMoreElements()) {
+ records.add(enuRec.nextElement());
+ }
+ return records;
+ }
+ }
+
+ public class ObjectCheckerThread extends Thread implements Serializable
+ {
+ /**
+ *
+ */
+ private static final long serialVersionUID = -4202610306272398760L;
+ //11 min, check consumer, session and connection.
+ private long checkPeriod = 660000;
+
+ public ObjectCheckerThread()
+ {
+ super("object-checker");
+ this.setDaemon(true);
+ }
+
+ public void run()
+ {
+ logger.writeRecord(this + " starting checking object, period using: " + checkPeriod);
+ while (true)
+ {
+ try {
+ Thread.sleep(checkPeriod);
+ } catch (InterruptedException e) {
+ }
+ logger.writeRecord(this + " checking objects...." + getCurrentTime());
+ checkConnections();
+ checkSessions();
+ checkConsumers();
+ logger.writeRecord(this + " checking done");
+ }
+ }
+
+ private void checkConnections()
+ {
+ List<ConnectionRecord> connCopy = getConnCopy();
+ for (ConnectionRecord conn : connCopy)
+ {
+ long msLive = conn.age();
+
+ if (msLive >= checkPeriod)
+ {
+ logger.writeRecord(this + " suspected long lived connection: " + conn.getId() + " age: " + msLive);
+ }
+ }
+
+ }
+
+ private void checkSessions()
+ {
+ List<SessionRecord> sessCopy = getSessCopy();
+ for (SessionRecord sess : sessCopy)
+ {
+ long msLive = sess.age();
+
+ if (msLive >= checkPeriod)
+ {
+ logger.writeRecord(this + " suspected long lived Session: " + sess.getId() + " age: " + msLive);
+ }
+ }
+ }
+
+ private void checkConsumers()
+ {
+ List<ConsumerRecord> csumCopy = getConsumerCopy();
+ for (ConsumerRecord csum : csumCopy)
+ {
+ long msLive = csum.age();
+
+ if (msLive >= checkPeriod)
+ {
+ logger.writeRecord(this + " suspected long lived consumer: " + csum.getId() + " age: " + msLive);
+ }
+ }
+ }
+ }
+
+}
+
Added: tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/MessageTracker.java
===================================================================
--- tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/MessageTracker.java (rev 0)
+++ tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/MessageTracker.java 2009-04-23 11:22:22 UTC (rev 6535)
@@ -0,0 +1,236 @@
+package org.jboss.jms.debug;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+
+/*
+ * Track the message life cycle.
+ *
+ * We can record following properties of a message:
+ *
+ * 1. Its producer
+ * 2. Its sending time
+ * 3. Its target destination.
+ *
+ * 4. Its delivery by queue: time of delivery, target consumer, tx
+ *
+ * 5. Its receiving: receiving time, the consumer, result.
+ *
+ * 6. Its acknowledgment
+ *
+ */
+public class MessageTracker
+{
+
+ //write import info, as stuck message
+ protected DebugLogger logger;
+
+ //write every message
+ private DebugLogger msgJournal;
+
+ private Hashtable<String, MessageRecord> msgRecords = new Hashtable<String, MessageRecord>();
+ private SimpleDateFormat format = new SimpleDateFormat("MM:dd-HH:mm:ss:SSS");
+ private MessageCheckerThread mct = null;
+
+ public MessageTracker(String name)
+ {
+ logger = new DebugLogger(name + "-error-msg.log");
+ msgJournal = new DebugLogger(name + "-message-journal");
+ }
+
+ //need refactor, abstract a bit then make a base class, don't use this as base class
+ public MessageTracker(String name, boolean b) {
+ logger = new DebugLogger(name + "-error-msg.log");
+ }
+
+ //we don't need to store message on client side.
+ public void messageEvent(String msgId, String event, boolean ifStore)
+ {
+ synchronized (msgRecords)
+ {
+ MessageRecord rec = msgRecords.get(msgId);
+ if (rec == null)
+ {
+ rec = new MessageRecord(msgId);
+ if (ifStore)
+ {
+ msgRecords.put(msgId, rec);
+ }
+ }
+ rec.addEvent(event);
+ }
+ }
+
+ public void messageEvent(String msgId, String event)
+ {
+ messageEvent(msgId, event, true);
+ }
+
+
+ public String getCurrentTime()
+ {
+ Date d = new Date();
+ return format.format(d);
+ }
+
+
+ public class MessageRecord extends EventRecord
+ {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 6341419723330315307L;
+
+ public MessageRecord(String msg)
+ {
+ super(msg);
+ }
+
+ public void addEvent(String event) {
+ super.addEvent("[Message]" + event, msgJournal);
+ }
+ }
+
+ public class TimedObject implements Serializable
+ {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 7112975602398320125L;
+ long birth;
+
+ public TimedObject()
+ {
+ birth = System.currentTimeMillis();
+ }
+
+ public long age()
+ {
+ long now = System.currentTimeMillis();
+ return now - birth;
+ }
+ }
+
+ public class EventRecord extends TimedObject
+ {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 5214971419987910110L;
+ private String id;
+
+ public EventRecord(String eid)
+ {
+ id = eid;
+ }
+
+ public void addEvent(String event, DebugLogger logger)
+ {
+ String rec;
+ String time = getCurrentTime();
+ rec = time + "-[" + id + "] " + event;
+ logger.writeRecord(rec);
+ }
+
+ public String getId()
+ {
+ return id;
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ Date d = new Date();
+ SimpleDateFormat format = new SimpleDateFormat("MM/dd-HH:mm:ss:SSS");
+ String time = format.format(d);
+
+ System.out.println("time is: " + time);
+
+ try {
+ Thread.sleep(10);
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ d = new Date();
+ time = format.format(d);
+
+ System.out.println("time is: " + time);
+ }
+
+ public void removeMessage(String msgId) {
+ synchronized (msgRecords)
+ {
+ msgRecords.remove(msgId);
+ }
+ }
+
+ private List<MessageRecord> getCopy()
+ {
+ synchronized (msgRecords)
+ {
+ ArrayList<MessageRecord> records = new ArrayList<MessageRecord>();
+ Enumeration<MessageRecord> enuRec = msgRecords.elements();
+ while (enuRec.hasMoreElements()) {
+ records.add(enuRec.nextElement());
+ }
+ return records;
+ }
+ }
+
+ public class MessageCheckerThread extends Thread implements Serializable
+ {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 637004467791397191L;
+ //5 min
+ private long checkPeriod = 300000;
+
+ public MessageCheckerThread()
+ {
+ super("message-checker");
+ this.setDaemon(true);
+ }
+
+ public void run()
+ {
+ logger.writeRecord(this + " starting checking msg, peroid: " + checkPeriod);
+ while (true)
+ {
+ try {
+ Thread.sleep(checkPeriod);
+ } catch (InterruptedException e) {
+ }
+ logger.writeRecord(this + " checking msg..." + getCurrentTime());
+ List<MessageRecord> msgCopy = getCopy();
+ for (MessageRecord msg : msgCopy)
+ {
+ long msLive = msg.age();
+
+ if (msLive >= checkPeriod)
+ {
+ logger.writeRecord(this + " suspected stuck message: " + msg.getId() + " age: " + msLive);
+ }
+ }
+ logger.writeRecord(this + " checking done.");
+ }
+
+ }
+ }
+
+ public synchronized void startChecker() {
+ if (mct == null)
+ {
+ mct = new MessageCheckerThread();
+ mct.start();
+ }
+ }
+}
Added: tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/ServerFailoverTracker.java
===================================================================
--- tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/ServerFailoverTracker.java (rev 0)
+++ tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/ServerFailoverTracker.java 2009-04-23 11:22:22 UTC (rev 6535)
@@ -0,0 +1,47 @@
+package org.jboss.jms.debug;
+
+public class ServerFailoverTracker extends MessageTracker {
+
+ private DebugLogger failoverJournal;
+
+ public ServerFailoverTracker(String name)
+ {
+ super(name, false);
+ failoverJournal = new DebugLogger(name + "-server-failover-journal.log");
+ }
+
+ public synchronized void report(String string, Throwable reason, boolean dumpThread) {
+ failoverJournal.writeRecord(string);
+ if (reason != null) {
+ failoverJournal.writeRecord("--additional info: --");
+ dumpStackTrace(reason);
+ failoverJournal.writeRecord("--end additional info: --");
+ }
+ if (dumpThread) {
+ dumpThreadStackTrace();
+ }
+ }
+
+ private void dumpStackTrace(Throwable reason) {
+ failoverJournal.writeRecord("Exception: " + reason.getClass().getName());
+ failoverJournal.writeRecord("Message: " + reason.getMessage());
+ failoverJournal.writeRecord("Cause: " + reason.getCause());
+ failoverJournal.writeRecord("Stack: ");
+ StackTraceElement[] elems = reason.getStackTrace();
+ for (StackTraceElement ele : elems) {
+ failoverJournal.writeRecord(ele.toString());
+ }
+ }
+
+
+ private void dumpThreadStackTrace() {
+ StackTraceElement[] elems = Thread.currentThread().getStackTrace();
+ failoverJournal.writeRecord("--Thread trace begin--");
+ for (StackTraceElement ele : elems) {
+ failoverJournal.writeRecord(ele.toString());
+ }
+ failoverJournal.writeRecord("--Thread trace end--");
+ }
+
+
+}
Added: tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/TrackerFactory.java
===================================================================
--- tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/TrackerFactory.java (rev 0)
+++ tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/TrackerFactory.java 2009-04-23 11:22:22 UTC (rev 6535)
@@ -0,0 +1,73 @@
+package org.jboss.jms.debug;
+
+import java.util.Random;
+
+public class TrackerFactory {
+
+ private static MessageTracker mTracker;
+ private static JMSObjectTracker jTracker;
+ private static MessageTracker c_mTracker;
+ private static JMSObjectTracker c_jTracker;
+ private static ClientFailoverTracker c_foTracker;
+ private static ServerFailoverTracker s_foTracker;
+
+ private static final int VMID;
+
+ static {
+ Random r = new Random();
+ VMID = r.nextInt(100);
+ }
+
+ public static final synchronized MessageTracker getClientMessageTracker()
+ {
+ if (c_mTracker == null) {
+ c_mTracker = new MessageTracker("client" + VMID);
+ c_mTracker.startChecker();
+ }
+ return c_mTracker;
+ }
+
+ public static final synchronized JMSObjectTracker getClientJMSObjTracker()
+ {
+ if (c_jTracker == null) {
+ c_jTracker = new JMSObjectTracker("client" + VMID);
+ c_jTracker.startChecker();
+ }
+ return c_jTracker;
+ }
+
+ public static final synchronized MessageTracker getServerMessageTracker()
+ {
+ if (mTracker == null) {
+ mTracker = new MessageTracker("server" + VMID);
+ mTracker.startChecker();
+ }
+ return mTracker;
+ }
+
+ public static final synchronized JMSObjectTracker getServerJMSObjTracker()
+ {
+ if (jTracker == null) {
+ jTracker = new JMSObjectTracker("server" + VMID);
+ jTracker.startChecker();
+ }
+ return jTracker;
+ }
+
+ public static final synchronized ClientFailoverTracker getClientFailoverTracker()
+ {
+ if (c_foTracker == null) {
+ c_foTracker = new ClientFailoverTracker("" + VMID);
+ }
+ return c_foTracker;
+ }
+
+ public static final synchronized ServerFailoverTracker getServerFailoverTracker()
+ {
+ if (s_foTracker == null) {
+ s_foTracker = new ServerFailoverTracker("" + VMID);
+ }
+ return s_foTracker;
+ }
+
+}
Added: tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/WriterUtil.java
===================================================================
--- tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/WriterUtil.java (rev 0)
+++ tags/JBossMessaging_1_4_0_SP3_CP03_1456/src/main/org/jboss/jms/debug/WriterUtil.java 2009-04-23 11:22:22 UTC (rev 6535)
@@ -0,0 +1,21 @@
+package org.jboss.jms.debug;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintWriter;
+import java.util.HashMap;
+
+public class WriterUtil {
+
+ public static HashMap<String, PrintWriter> allWriters = new HashMap<String, PrintWriter>();
+
+ public static synchronized PrintWriter getWriter(String path) throws FileNotFoundException
+ {
+ PrintWriter writer = allWriters.get(path);
+ if (writer == null) {
+ writer = new PrintWriter(new FileOutputStream(path, true), true);
+ allWriters.put(path, writer);
+ }
+ return writer;
+ }
+}
More information about the jboss-cvs-commits
mailing list