use of com.swiftmq.swiftlet.mgmt.MgmtSwiftlet in project swiftmq-ce by iitsoftware.
the class NetworkSwiftletImpl method startup.
@Override
protected void startup(Configuration config) throws SwiftletException {
try {
ctx = new SwiftletContext(config, this);
} catch (Exception e) {
throw new SwiftletException(e.getMessage());
}
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "startup ...");
setConnectionManager(new ConnectionManagerImpl(ctx));
ivmScheduler = new IntraVMScheduler(ctx);
ioScheduler = new NettyIOScheduler(ctx);
Property prop = config.getProperty("reuse-serversockets");
reuseServerSocket = (Boolean) prop.getValue();
prop = config.getProperty("dns-resolve-enabled");
prop.setPropertyChangeListener(new PropertyChangeAdapter(null) {
public void propertyChanged(Property property, Object oldValue, Object newValue) throws PropertyChangeException {
dnsResolve = (Boolean) newValue;
}
});
dnsResolve = (Boolean) prop.getValue();
prop = config.getProperty("zombi-connection-timeout");
zombiConnectionTimeout = (Long) prop.getValue();
prop.setPropertyChangeListener(new PropertyChangeAdapter(null) {
public void propertyChanged(Property property, Object oldValue, Object newValue) throws PropertyChangeException {
zombiConnectionTimeout = (Long) newValue;
}
});
prop = config.getProperty("collect-interval");
prop.setPropertyChangeListener(new PropertyChangeAdapter(null) {
public void propertyChanged(Property property, Object oldValue, Object newValue) throws PropertyChangeException {
collectInterval = (Long) newValue;
collectChanged((Long) oldValue, collectInterval);
}
});
collectInterval = (Long) prop.getValue();
if (collectOn) {
if (collectInterval > 0) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "startup: registering byte count collector");
ctx.timerSwiftlet.addTimerListener(collectInterval, this);
} else if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "startup: collect interval <= 0; no byte count collector");
}
try {
SwiftletManager.getInstance().addSwiftletManagerListener("sys$mgmt", new SwiftletManagerAdapter() {
public void swiftletStarted(SwiftletManagerEvent evt) {
try {
ctx.mgmtSwiftlet = (MgmtSwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$mgmt");
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "registering MgmtListener ...");
ctx.mgmtSwiftlet.addMgmtListener(new MgmtListener() {
public void adminToolActivated() {
collectOn = true;
collectChanged(-1, collectInterval);
}
public void adminToolDeactivated() {
collectChanged(collectInterval, -1);
collectOn = false;
}
});
} catch (Exception e) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "swiftletStartet, exception=" + e);
}
}
});
} catch (Exception e) {
throw new SwiftletException(e.getMessage());
}
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "startup DONE");
}
use of com.swiftmq.swiftlet.mgmt.MgmtSwiftlet in project swiftmq-ce by iitsoftware.
the class StableStore method init.
private void init() throws Exception {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace("sys$store", toString() + "/init ...");
nFree = 0;
if (freePoolEnabled)
freePool = new IntRingBuffer[10];
filename = path + File.separatorChar + FILENAME;
emptyData = new byte[Page.PAGE_SIZE];
// emtpy
emptyData[0] = 1;
for (int i = 1; i < Page.PAGE_SIZE; i++) emptyData[i] = 0;
file = new RandomAccessFile(filename, "rw");
fileLength = file.length();
if (fileLength > 0) {
numberPages = (int) (fileLength / Page.PAGE_SIZE);
if (!offline)
shrinkFile();
} else
initialize(initialPages);
sync();
if (freePoolEnabled)
buildFreePageList();
if (!offline) {
Entity entity = ctx.filesList.createEntity();
entity.setName(FILENAME);
entity.createCommands();
ctx.filesList.addEntity(entity);
freeProp = entity.getProperty("free-pages");
usedProp = entity.getProperty("used-pages");
fileSizeProp = entity.getProperty("file-size");
sizeCollectProp = ctx.dbEntity.getProperty("size-collect-interval");
collectInterval = (long) (Long) sizeCollectProp.getValue();
startTimer();
PropertyChangeListener propChangeListener = new PropertyChangeListener() {
public void propertyChanged(Property property, Object oldValue, Object newValue) throws PropertyChangeException {
stopTimer();
collectInterval = (Long) newValue;
startTimer();
}
};
sizeCollectProp.setPropertyChangeListener(propChangeListener);
swiftletManagerAdapter = new SwiftletManagerAdapter() {
public void swiftletStarted(SwiftletManagerEvent event) {
mgmtSwiftlet = (MgmtSwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$mgmt");
mgmtSwiftlet.addMgmtListener(StableStore.this);
}
};
SwiftletManager.getInstance().addSwiftletManagerListener("sys$mgmt", swiftletManagerAdapter);
}
ctx.logSwiftlet.logInformation("sys$store", toString() + "/init done, size=" + numberPages + ", freePages=" + getNumberFreePages());
}
use of com.swiftmq.swiftlet.mgmt.MgmtSwiftlet in project swiftmq-client by iitsoftware.
the class RouterMemoryMeter method start.
public synchronized void start() {
timerSwiftlet = (TimerSwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$timer");
mgmtSwiftlet = (MgmtSwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$mgmt");
if (mgmtSwiftlet != null)
mgmtSwiftlet.addMgmtListener(RouterMemoryMeter.this);
else {
SwiftletManager.getInstance().addSwiftletManagerListener("sys$mgmt", new SwiftletManagerAdapter() {
public void swiftletStarted(SwiftletManagerEvent evt) {
mgmtSwiftlet = (MgmtSwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$mgmt");
mgmtSwiftlet.addMgmtListener(RouterMemoryMeter.this);
}
});
}
}
use of com.swiftmq.swiftlet.mgmt.MgmtSwiftlet in project swiftmq-ce by iitsoftware.
the class QueueManagerImpl method startup.
/**
* Startup the swiftlet. Check if all required properties are defined and all other
* startup conditions are met. Do startup work (i. e. start working thread, get/open resources).
* If any condition prevends from startup fire a SwiftletException.
*
* @throws com.swiftmq.swiftlet.SwiftletException
*/
protected void startup(Configuration config) throws SwiftletException {
startupTime = System.currentTimeMillis();
ctx = createSwiftletContext(config);
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "startup ...");
ctx.usageList.getCommandRegistry().addCommand(new Activate(ctx).createCommand());
ctx.usageList.getCommandRegistry().addCommand(new Viewer(ctx).createCommand());
ctx.usageList.getCommandRegistry().addCommand(new Exporter(ctx).createCommand());
ctx.usageList.getCommandRegistry().addCommand(new Importer(ctx).createCommand());
ctx.usageList.getCommandRegistry().addCommand(new Remover(ctx).createCommand());
ctx.usageList.getCommandRegistry().addCommand(new Copier(ctx).createCommand());
ctx.usageList.getCommandRegistry().addCommand(new Mover(ctx).createCommand());
ctx.usageList.getCommandRegistry().addCommand(new Resetter(ctx).createCommand());
if (ctx.smartTree)
ctx.usageList.getTemplate().removeEntities();
Property prop = ctx.root.getProperty(PROP_MAX_FLOWCONTROL_DELAY);
maxFlowControlDelay = ((Long) prop.getValue()).longValue();
queueControllerList = (EntityList) ctx.root.getEntity("queue-controllers");
ctx.messageQueueFactory = createMessageQueueFactory();
ctx.messageGroupDispatchPolicyFactory = createMessaageGroupDispatchPolicyFactory();
ctx.cacheTableFactory = createCacheTableFactory();
ctx.dispatchPolicyRegistry = new DispatchPolicyRegistry(ctx);
ctx.redispatcherController = new RedispatcherController(ctx);
regularQueueFactory = createRegularQueueFactory();
tempQueueFactory = createTempQueueFactory();
systemQueueFactory = createSystemQueueFactory();
tempQueueController = getQueueController(PREFIX_TEMP_QUEUE + "000");
if (tempQueueController == null)
throw new SwiftletException("No Queue Controller for temporary Queues defined!");
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "Queue Controller for temp queues: " + tempQueueController.getName());
localRouterName = SwiftletManager.getInstance().getRouterName();
queueTable = new HashMap();
inboundRedirectors = new HashMap();
outboundRedirectors = new HashMap();
// Create DLQ
try {
createQueue(DLQ, (ActiveLogin) null);
((MessageQueue) getQueueForInternalUse(DLQ)).setAlwaysDeliverExpired(true);
} catch (Exception e) {
e.printStackTrace();
throw new SwiftletException(e.toString());
}
createQueues((EntityList) ctx.root.getEntity("queues"));
SwiftletManager.getInstance().addSwiftletManagerListener("sys$jndi", new SwiftletManagerAdapter() {
public void swiftletStarted(SwiftletManagerEvent evt) {
try {
ctx.jndiSwiftlet = (JNDISwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$jndi");
ctx.jndiAliasList = (EntityList) SwiftletManager.getInstance().getConfiguration("sys$jndi").getEntity("aliases");
registerJNDIQueues();
} catch (Exception e) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "swiftletStartet, exception=" + e);
}
}
public void swiftletStopped(SwiftletManagerEvent swiftletManagerEvent) {
ctx.jndiSwiftlet = null;
ctx.jndiAliasList = null;
}
});
SwiftletManager.getInstance().addSwiftletManagerListener("sys$mgmt", new SwiftletManagerAdapter() {
public void swiftletStarted(SwiftletManagerEvent evt) {
try {
ctx.mgmtSwiftlet = (MgmtSwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$mgmt");
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "registering MgmtListener ...");
ctx.mgmtSwiftlet.addMgmtListener(new MgmtListener() {
public void adminToolActivated() {
collectOn = true;
collectChanged(-1, collectInterval);
}
public void adminToolDeactivated() {
collectChanged(collectInterval, -1);
collectOn = false;
}
});
} catch (Exception e) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "swiftletStartet, exception=" + e);
}
}
});
prop = ctx.root.getProperty(PROP_LOG_DUPLICATES);
prop.setPropertyChangeListener(new PropertyChangeAdapter(null) {
public void propertyChanged(Property property, Object oldValue, Object newValue) throws PropertyChangeException {
logDuplicates = ((Boolean) newValue).booleanValue();
}
});
logDuplicates = ((Boolean) prop.getValue()).booleanValue();
prop = ctx.root.getProperty(PROP_LOG_EXPIRED);
prop.setPropertyChangeListener(new PropertyChangeAdapter(null) {
public void propertyChanged(Property property, Object oldValue, Object newValue) throws PropertyChangeException {
logExpired = ((Boolean) newValue).booleanValue();
}
});
logExpired = ((Boolean) prop.getValue()).booleanValue();
prop = ctx.root.getProperty(PROP_DELIVER_EXPIRED);
prop.setPropertyChangeListener(new PropertyChangeAdapter(null) {
public void propertyChanged(Property property, Object oldValue, Object newValue) throws PropertyChangeException {
deliverExpired = ((Boolean) newValue).booleanValue();
}
});
deliverExpired = ((Boolean) prop.getValue()).booleanValue();
prop = ctx.root.getProperty(PROP_COLLECT_INTERVAL);
prop.setPropertyChangeListener(new PropertyChangeAdapter(null) {
public void propertyChanged(Property property, Object oldValue, Object newValue) throws PropertyChangeException {
collectInterval = ((Long) newValue).longValue();
collectChanged(((Long) oldValue).longValue(), collectInterval);
}
});
collectInterval = ((Long) prop.getValue()).longValue();
if (collectOn) {
if (collectInterval > 0) {
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "startup: registering message count collector");
ctx.timerSwiftlet.addTimerListener(collectInterval, this);
} else if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "startup: collect interval <= 0; no message count collector");
}
prop = ctx.root.getProperty(PROP_MULTI_QUEUE_TX_GLOBAL_LOCK);
if (prop != null) {
prop.setPropertyChangeListener(new PropertyChangeAdapter(null) {
public void propertyChanged(Property property, Object oldValue, Object newValue) throws PropertyChangeException {
setUseGlobalLocking(((Boolean) newValue).booleanValue());
}
});
setUseGlobalLocking(((Boolean) prop.getValue()).booleanValue());
}
SwiftletManager.getInstance().addSwiftletManagerListener("sys$scheduler", new SwiftletManagerAdapter() {
public void swiftletStarted(SwiftletManagerEvent event) {
ctx.schedulerSwiftlet = (SchedulerSwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$scheduler");
jobRegistrar = new JobRegistrar(ctx);
jobRegistrar.register();
}
public void swiftletStopInitiated(SwiftletManagerEvent event) {
jobRegistrar.unregister();
}
});
SwiftletManager.getInstance().addSwiftletManagerListener("sys$routing", new SwiftletManagerAdapter() {
public void swiftletStarted(SwiftletManagerEvent event) {
try {
startCluster();
startCompositeQueues();
} catch (Exception e) {
e.printStackTrace();
}
ctx.routingSwiftlet = (RoutingSwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$routing");
routingListener = new ClusterRoutingListener();
ctx.routingSwiftlet.addRoutingListener(routingListener);
}
public void swiftletStopInitiated(SwiftletManagerEvent event) {
ctx.routingSwiftlet.removeRoutingListener(routingListener);
try {
stopCluster();
stopCompositeQueues();
} catch (Exception e) {
e.printStackTrace();
}
}
});
if (ctx.traceSpace.enabled)
ctx.traceSpace.trace(getName(), "startup: done.");
}
use of com.swiftmq.swiftlet.mgmt.MgmtSwiftlet in project swiftmq-ce by iitsoftware.
the class ThreadpoolSwiftletImpl method startup.
protected void startup(Configuration config) throws SwiftletException {
this.config = config;
root = config;
usageList = (EntityList) root.getEntity("usage");
traceSwiftlet = (TraceSwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$trace");
traceSpace = traceSwiftlet.getTraceSpace(TraceSwiftlet.SPACE_KERNEL);
if (traceSpace.enabled)
traceSpace.trace(getName(), "startup ...");
EntityList poolList = (EntityList) root.getEntity("pools");
createPool(DEFAULT_POOL, null, poolList.getTemplate());
PoolDispatcher dp = (PoolDispatcher) pools.get(DEFAULT_POOL);
dp.setKernelPool(true);
String[] poolNames = getDefinedPoolnames(poolList);
if (poolNames != null && poolNames.length > 0) {
if (traceSpace.enabled)
traceSpace.trace(getName(), "startup: starting defined thread pools");
for (int i = 0; i < poolNames.length; i++) {
createPool(poolNames[i], poolList.getEntity(poolNames[i]), poolList.getTemplate());
storeThreadNamesForPool(poolNames[i], poolList.getEntity(poolNames[i]));
}
}
poolList.setEntityAddListener(new EntityChangeAdapter(null) {
public void onEntityAdd(Entity parent, Entity newEntity) throws EntityAddException {
boolean kp = ((Boolean) newEntity.getProperty(PROP_KERNEL_POOL).getValue()).booleanValue();
if (kp)
throw new EntityAddException("You cannot create a kernel pool dynamically.");
createPool(newEntity.getName(), newEntity, newEntity);
if (traceSpace.enabled)
traceSpace.trace(getName(), "onEntityAdd (pool), poolName=" + newEntity.getName());
}
});
poolList.setEntityRemoveListener(new EntityChangeAdapter(null) {
public void onEntityRemove(Entity parent, Entity delEntity) throws EntityRemoveException {
PoolDispatcher pd = null;
synchronized (pools) {
pd = (PoolDispatcher) pools.get(delEntity.getName());
if (pd.isKernelPool())
throw new EntityRemoveException("You cannot remove a kernel pool dynamically.");
pd.close();
pools.remove(delEntity.getName());
usageList.removeDynamicEntity(pd);
}
synchronized (threadNameMaps) {
for (Iterator iter = threadNameMaps.entrySet().iterator(); iter.hasNext(); ) {
String entry = (String) ((Map.Entry) iter.next()).getValue();
if (entry.equals(pd.getPoolName()))
iter.remove();
}
}
if (traceSpace.enabled)
traceSpace.trace(getName(), "onEntityRemove (pool): poolName=" + delEntity.getName());
}
});
try {
SwiftletManager.getInstance().addSwiftletManagerListener("sys$mgmt", new SwiftletManagerAdapter() {
public void swiftletStarted(SwiftletManagerEvent evt) {
try {
timerSwiftlet = (TimerSwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$timer");
mgmtSwiftlet = (MgmtSwiftlet) SwiftletManager.getInstance().getSwiftlet("sys$mgmt");
if (traceSpace.enabled)
traceSpace.trace(getName(), "registering MgmtListener ...");
mgmtSwiftlet.addMgmtListener(new MgmtListener() {
public void adminToolActivated() {
collectOn = true;
collectChanged(-1, collectInterval);
}
public void adminToolDeactivated() {
collectChanged(collectInterval, -1);
collectOn = false;
}
});
} catch (Exception e) {
if (traceSpace.enabled)
traceSpace.trace(getName(), "swiftletStartet, exception=" + e);
}
}
});
} catch (Exception e) {
throw new SwiftletException(e.getMessage());
}
Property prop = root.getProperty(PROP_COLLECT_INTERVAL);
prop.setPropertyChangeListener(new PropertyChangeAdapter(null) {
public void propertyChanged(Property property, Object oldValue, Object newValue) throws PropertyChangeException {
collectInterval = ((Long) newValue).longValue();
collectChanged(((Long) oldValue).longValue(), collectInterval);
}
});
collectInterval = ((Long) prop.getValue()).longValue();
if (collectOn) {
if (collectInterval > 0) {
if (traceSpace.enabled)
traceSpace.trace(getName(), "startup: registering thread count collector");
timerSwiftlet.addTimerListener(collectInterval, this);
} else if (traceSpace.enabled)
traceSpace.trace(getName(), "startup: collect interval <= 0; no thread count collector");
}
}
Aggregations