@Override public void serverStartFailed(final String serverProcessName) { final String serverName = ManagedServer.getServerName(serverProcessName); final ManagedServer server = servers.get(serverName); if(server == null) { ROOT_LOGGER.noServerAvailable(serverName); return; } server.serverStartFailed(); synchronized (shutdownCondition) { shutdownCondition.notifyAll(); } }
@Override public void serverStarted(String serverProcessName) { final String serverName = ManagedServer.getServerName(serverProcessName); final ManagedServer server = servers.get(serverName); if(server == null) { ROOT_LOGGER.noServerAvailable(serverName); return; } server.serverStarted(null); synchronized (shutdownCondition) { shutdownCondition.notifyAll(); } }
@Override public void serverProcessAdded(final String serverProcessName) { final String serverName = ManagedServer.getServerName(serverProcessName); final ManagedServer server = servers.get(serverName); if(server == null) { ROOT_LOGGER.noServerAvailable(serverName); return; } server.processAdded(); synchronized (shutdownCondition) { shutdownCondition.notifyAll(); } }
@Override public void serverProcessStarted(final String serverProcessName) { final String serverName = ManagedServer.getServerName(serverProcessName); final ManagedServer server = servers.get(serverName); if(server == null) { ROOT_LOGGER.noServerAvailable(serverName); return; } server.processStarted(); synchronized (shutdownCondition) { shutdownCondition.notifyAll(); } }
@Override public void serverProcessRemoved(final String serverProcessName) { final String serverName = ManagedServer.getServerName(serverProcessName); final ManagedServer server = servers.remove(serverName); if(server == null) { ROOT_LOGGER.noServerAvailable(serverName); return; } server.processRemoved(); synchronized (shutdownCondition) { shutdownCondition.notifyAll(); } }
@Override public void serverProcessStopped(final String serverProcessName) { final String serverName = ManagedServer.getServerName(serverProcessName); final ManagedServer server = servers.get(serverName); if(server == null) { ROOT_LOGGER.noServerAvailable(serverName); return; } // always un-register in case the process exits domainController.unregisterRunningServer(server.getServerName()); server.processFinished(); synchronized (shutdownCondition) { shutdownCondition.notifyAll(); } }
@Override public ProxyController serverCommunicationRegistered(final String serverProcessName, final ManagementChannelHandler channelAssociation) { if(shutdown || connectionFinished) { throw HostControllerMessages.MESSAGES.hostAlreadyShutdown(); } final String serverName = ManagedServer.getServerName(serverProcessName); final ManagedServer server = servers.get(serverName); if(server == null) { ROOT_LOGGER.noServerAvailable(serverName); return null; } try { final TransactionalProtocolClient client = server.channelRegistered(channelAssociation); final Channel channel = channelAssociation.getChannel(); channel.addCloseHandler(new CloseHandler<Channel>() { public void handleClose(final Channel closed, final IOException exception) { final boolean shuttingDown = shutdown || connectionFinished; // Unregister right away if(server.callbackUnregistered(client, shuttingDown)) { domainController.unregisterRunningServer(server.getServerName()); } } }); return server.getProxyController(); } catch (IOException e) { throw new RuntimeException(e); } }
@Override public void operationFailed(final String serverProcessName, final ProcessMessageHandler.OperationType type) { final String serverName = ManagedServer.getServerName(serverProcessName); final ManagedServer server = servers.get(serverName); if(server == null) { ROOT_LOGGER.noServerAvailable(serverName); return; } switch (type) { case ADD: server.transitionFailed(ManagedServer.InternalState.PROCESS_ADDING); break; case START: server.transitionFailed(ManagedServer.InternalState.PROCESS_STARTING); break; case STOP: server.transitionFailed(ManagedServer.InternalState.PROCESS_STOPPING); break; case SEND_STDIN: case RECONNECT: server.transitionFailed(ManagedServer.InternalState.SERVER_STARTING); break; case REMOVE: server.transitionFailed(ManagedServer.InternalState.PROCESS_REMOVING); break; } }