diff --git a/joram/a3/rt/src/main/java/fr/dyade/aaa/agent/SCServer.java b/joram/a3/rt/src/main/java/fr/dyade/aaa/agent/SCServer.java index 630018af1fcf037c1c7b4f50a2445fc1a4b0f112..090c9eb5f6b8996aca9cce420ea0928fcc84fb17 100644 --- a/joram/a3/rt/src/main/java/fr/dyade/aaa/agent/SCServer.java +++ b/joram/a3/rt/src/main/java/fr/dyade/aaa/agent/SCServer.java @@ -86,6 +86,46 @@ public class SCServer implements SCServerMBean { return servers; } + @Override + public void dumpServerState(String path) { + dumpServerState(path, null); + } + + public static void dumpServerState(String path, String cause) { + FileWriter writer = null; + try { + writer = new FileWriter(path, true); + final StringBuffer strbuf = new StringBuffer(); + + if (cause != null) { + writer.write("\n===== Dump cause =====\n\n"); + writer.write(cause); + writer.write("\n"); + } + + writer.write("\n===== MBean's attributes =====\n\n"); + DumpAttributes.dumpAttributes("*:*", strbuf); + writer.write(strbuf.toString()); + writer.flush(); + strbuf.setLength(0); + + writer.write("\n===== Thread's stack traces =====\n\n"); + + DumpAttributes.dumpAllStackTraces(strbuf); + writer.write(strbuf.toString()); + writer.flush(); + strbuf.setLength(0); + } catch (IOException exc) { + logger.log(BasicLevel.ERROR, + "MqttCheckActivator.dumpServerState, cannot open dump file \"" + path + "\"", exc); + } finally { + if (writer != null) + try { + writer.close(); + } catch (IOException e) {} + } + } + public void dumpAttributes(String name, String path, boolean threaddump) { FileWriter writer = null; try { @@ -95,6 +135,7 @@ public class SCServer implements SCServerMBean { DumpAttributes.dumpAttributes(name, strbuf); if (threaddump) DumpAttributes.dumpAllStackTraces(strbuf); + writer.write(strbuf.toString()); writer.close(); } catch (IOException exc) { logger.log(BasicLevel.ERROR, diff --git a/joram/a3/rt/src/main/java/fr/dyade/aaa/agent/SCServerMBean.java b/joram/a3/rt/src/main/java/fr/dyade/aaa/agent/SCServerMBean.java index 7f8f4a8a25e0fba36eb84011758f16b1542f2d8c..19da25dfa1df92bd1df116b304dbca4a9d742a5b 100644 --- a/joram/a3/rt/src/main/java/fr/dyade/aaa/agent/SCServerMBean.java +++ b/joram/a3/rt/src/main/java/fr/dyade/aaa/agent/SCServerMBean.java @@ -33,5 +33,6 @@ public interface SCServerMBean { public String[] getServers(); + public void dumpServerState(String path); public void dumpAttributes(String name, String path, boolean threaddump); }