public static boolean | multicastEvent(int eventType, java.lang.String entityName, java.lang.String moduleType, boolean cascade, boolean forceDeploy, int loadUnloadAction, java.lang.String targetName)Multicasts the event to the respective listeners. The listeners are
multicast from here even if the instance is not running. The
AdminEventMulticaster should take care of it.
/*
private static boolean multicastEvent(int eventType, String entityName)
throws DeploymentException
{
return multicastEvent(eventType, entityName, null);
}
*/
/*
public static boolean multicastEvent(int eventType, String entityName,
String moduleType) throws DeploymentException {
return multicastEvent(eventType, entityName, moduleType, false);
}
*/
/*
public boolean multicastEvent(int eventType, String entityName,
String moduleType , boolean cascade) throws DeploymentException {
return multicastEvent(eventType, entityName, moduleType, cascade, false, null);
}
*/
//String name = getInstanceName();
AdminEvent event = null;
EventBuilder builder = new EventBuilder();
//XXX Can we put the following 4 lines be done in the EventBuilder?
EventStack stack = EventContext.getEventStackFromThreadLocal();
ConfigContext ctx = stack.getConfigContext();
stack.setTarget(targetName);
stack.setConfigChangeList(ctx.getConfigChangeList());
try{
if (eventType == BaseDeployEvent.APPLICATION_DEPLOYED)
{
event = builder.createApplicationDeployEvent(
BaseDeployEvent.DEPLOY, entityName, false, forceDeploy,
loadUnloadAction);
}
else if (eventType == BaseDeployEvent.APPLICATION_UNDEPLOYED)
{
event = builder.createApplicationDeployEvent(
BaseDeployEvent.UNDEPLOY, entityName, cascade, forceDeploy, loadUnloadAction);
}
else if (eventType == BaseDeployEvent.APPLICATION_REDEPLOYED)
{
event = builder.createApplicationDeployEvent(
BaseDeployEvent.REDEPLOY, entityName, false, forceDeploy,
loadUnloadAction);
}
else if (eventType == BaseDeployEvent.MODULE_DEPLOYED)
{
event = builder.createModuleDeployEvent(
BaseDeployEvent.DEPLOY, entityName, moduleType, cascade, forceDeploy);
}
else if (eventType == BaseDeployEvent.MODULE_UNDEPLOYED)
{
event = builder.createModuleDeployEvent(
BaseDeployEvent.UNDEPLOY, entityName, moduleType, cascade, forceDeploy);
}
else if (eventType == BaseDeployEvent.MODULE_REDEPLOYED)
{
event = builder.createModuleDeployEvent(
BaseDeployEvent.REDEPLOY, entityName, moduleType);
}
else if (eventType == BaseDeployEvent.APPLICATION_ENABLE)
{
event = builder.createApplicationDeployEvent(
BaseDeployEvent.ENABLE, entityName, false, forceDeploy,
loadUnloadAction);
}
else if (eventType == BaseDeployEvent.APPLICATION_DISABLE)
{
event = builder.createApplicationDeployEvent(
BaseDeployEvent.DISABLE, entityName, false, forceDeploy,
loadUnloadAction);
}
else if(eventType == BaseDeployEvent.MODULE_ENABLE)
{
event = builder.createModuleDeployEvent(
BaseDeployEvent.ENABLE, entityName, moduleType, false, forceDeploy);
}
else if(eventType == BaseDeployEvent.MODULE_DISABLE)
{
event = builder.createModuleDeployEvent(
BaseDeployEvent.DISABLE, entityName, moduleType, false, forceDeploy);
}
else if(eventType == BaseDeployEvent.APPLICATION_REFERENCED)
{
event = builder.createApplicationDeployEvent(
BaseDeployEvent.ADD_REFERENCE, entityName, false, forceDeploy, loadUnloadAction);
}
else if(eventType == BaseDeployEvent.APPLICATION_UNREFERENCED)
{
event = builder.createApplicationDeployEvent(
BaseDeployEvent.REMOVE_REFERENCE, entityName, false, forceDeploy, loadUnloadAction);
}
else if (eventType == CONFIG_CHANGED)
{
event = builder.createConfigChangeEvent(targetName, null);
}
else
{
String msg =
localStrings.getString( "admin.server.core.mbean.config.no_such_event",
new Integer(eventType) );
throw new RuntimeException( msg );
}
} catch (ConfigException ex) {
DeploymentException de = new DeploymentException(ex.getMessage());
de.initCause(ex);
throw de;
}
//set target destination for the event
if (targetName != null) {
event.setTargetDestination(targetName);
}
if (event instanceof ApplicationDeployEvent
|| event instanceof ModuleDeployEvent) {
AdminEventCache.populateConfigChange(getConfigContext(), event);
}
if (sLogger.isLoggable(Level.FINEST)) {
sLogger.log(Level.FINEST, "mbean.event_sent", event.getEventInfo());
} else {
sLogger.log(Level.FINE, "mbean.send_event", event.toString());
}
AdminEventResult multicastResult =
AdminEventMulticaster.multicastEvent(event);
sLogger.log(Level.FINE, "mbean.event_res",
multicastResult.getResultCode());
sLogger.log(Level.FINE, "mbean.event_reply",
multicastResult.getAllMessagesAsString());
boolean eventSuccess = true;
//ALREADY SET in Admin Event Multicaster
//AdminEventCache cache =
// AdminEventCache.getInstance(mInstanceName);
//cache.setRestartNeeded(true);
// if there is an exception thrown when loading modules
// rethrow the exception
AdminEventListenerException ale = null;
ale = multicastResult.getFirstAdminEventListenerException();
if (ale != null) {
sLogger.log(Level.WARNING, "mbean.event_failed",
ale.getMessage());
DeploymentException de =
new DeploymentException(ale.getMessage());
de.initCause(ale);
throw de;
}
return eventSuccess;
|