diff --git a/joram/joram/mom/core/src/main/java/org/objectweb/joram/mom/dest/AdminTopic.java b/joram/joram/mom/core/src/main/java/org/objectweb/joram/mom/dest/AdminTopic.java index e1b578191721a893090d5206f6c11e8f610cf237..99f893f43e0d2856cf03ba9006c8cd50d37e6b68 100644 --- a/joram/joram/mom/core/src/main/java/org/objectweb/joram/mom/dest/AdminTopic.java +++ b/joram/joram/mom/core/src/main/java/org/objectweb/joram/mom/dest/AdminTopic.java @@ -1,6 +1,6 @@ /* * JORAM: Java(TM) Open Reliable Asynchronous Messaging - * Copyright (C) 2001 - 2019 ScalAgent Distributed Technologies + * Copyright (C) 2001 - 2020 ScalAgent Distributed Technologies * Copyright (C) 1996 - 2000 Dyade * * This library is free software; you can redistribute it and/or @@ -334,16 +334,16 @@ public final class AdminTopic extends Topic implements AdminTopicMBean { Identity identity = adminNot.getIdentity(); try { - //identity.validate(); - if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "AdminTopic store identity = " + identity); usersTable.put(identity.getUserName(), identity); - proxiesTable.put(identity.getUserName(), adminNot.getProxyId()); - - clients.put(adminNot.getProxyId(), new Integer(READWRITE)); + if (adminNot.getProxyId() != null) { + // It's the first boot, registers the administrator proxy + proxiesTable.put(identity.getUserName(), adminNot.getProxyId()); + clients.put(adminNot.getProxyId(), new Integer(READWRITE)); + } if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, diff --git a/joram/joram/mom/core/src/main/java/org/objectweb/joram/mom/proxies/ConnectionManager.java b/joram/joram/mom/core/src/main/java/org/objectweb/joram/mom/proxies/ConnectionManager.java index 33753e8e67a83468cc2c42640c1cdb85f4a8acb7..2f61170b51f7c718e56120a2087a52b50de73731 100644 --- a/joram/joram/mom/core/src/main/java/org/objectweb/joram/mom/proxies/ConnectionManager.java +++ b/joram/joram/mom/core/src/main/java/org/objectweb/joram/mom/proxies/ConnectionManager.java @@ -315,62 +315,68 @@ public class ConnectionManager implements ConnectionManagerMBean { if (logger.isLoggable(BasicLevel.DEBUG)) logger.log(BasicLevel.DEBUG, "ConnectionManager.init(" + args + ',' + firstTime + ')'); - - // TODO (AF): Be careful, this default value is saved and retrieved by - // AdminTopic agent. + + // TODO (AF): Be careful, this default value is saved and retrieved by AdminTopic agent. Integer delay = AgentServer.getInteger(AdminCommandConstant.REDELIVERY_DELAY); if (delay != null) { logger.log(BasicLevel.FATAL, "ConnectionManager.setDefaultRedeliveryDelay: " + AdminCommandConstant.REDELIVERY_DELAY + "=" + delay); Queue.setDefaultRedeliveryDelay(delay); } - - if (! firstTime) return; - - AdminTopic adminTopic = new AdminTopic(); - adminTopic.deploy(); inFlow = AgentServer.getInteger("ConnectionManager.inFlow", inFlow).intValue(); + String initialAdminName = null; + String initialAdminPass = null; if (args != null) { - String initialAdminName = null; - String initialAdminPass = null; StringTokenizer st = new StringTokenizer(args); if (st.countTokens() >= 1) { - initialAdminName = st.nextToken(); - } - if (st.hasMoreTokens()) { - initialAdminPass = st.nextToken(); + initialAdminName = st.nextToken(); } - - // AF: deprecated, will be deleted. if (st.hasMoreTokens()) { - try { - inFlow = Integer.parseInt(st.nextToken()); - } catch (Exception exc) { - inFlow = -1; - } + initialAdminPass = st.nextToken(); } + logger.log(BasicLevel.INFO, + "ConnectionManager.init admin=(" + initialAdminName + ',' + initialAdminPass + ')'); + } + + if (firstTime) { + AdminTopic adminTopic = new AdminTopic(); + adminTopic.deploy(); if (initialAdminName != null) { UserAgent userAgent = new UserAgent(initialAdminName, AgentId.JoramAdminPxStamp); userAgent.deploy(); - Identity identity = createIdentity(Identity.getRootName(initialAdminName), - initialAdminPass, + Identity identity = createIdentity(Identity.getRootName(initialAdminName), + initialAdminPass, Identity.getRootIdentityClass(initialAdminName)); AdminNotification adminNot = new AdminNotification(userAgent.getId(), identity); + logger.log(BasicLevel.INFO, + "ConnectionManager.init send adminNot to " + adminTopic.getId()); Channel.sendTo(adminTopic.getId(), adminNot); } - - try { - MXWrapper.registerMBean(getCurrentInstance(), "Joram#" + AgentServer.getServerId(), MBEAN_NAME); - } catch (Exception e) { - logger.log(BasicLevel.DEBUG, "registerMBean", e); + } else { + if (AgentServer.updatecfg != null) { + // Updates the administrator identity. + Identity identity = createIdentity(Identity.getRootName(initialAdminName), + initialAdminPass, + Identity.getRootIdentityClass(initialAdminName)); + AdminNotification adminNot = new AdminNotification(null, identity); + AgentId adminId = new AgentId(AgentServer.getServerId(), AgentServer.getServerId(), AgentId.JoramAdminStamp); + logger.log(BasicLevel.INFO, + "ConnectionManager.init send adminNot to " + adminId); + Channel.sendTo(adminId, adminNot); } } + + try { + MXWrapper.registerMBean(getCurrentInstance(), "Joram#" + AgentServer.getServerId(), MBEAN_NAME); + } catch (Exception e) { + logger.log(BasicLevel.DEBUG, "registerMBean", e); + } } /**