in uimaj-as-core/src/main/java/org/apache/uima/aae/controller/PrimitiveAnalysisEngineController_impl.java [1415:1492]
public void stop() {
super.stop(true); // shutdown now
if (aeInstancePool != null) {
try {
aeInstancePool.destroy();
} catch (Exception e) {
if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.WARNING)) {
UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, CLASS_NAME.getName(),
"stop", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
"UIMAEE_service_exception_WARNING", getComponentName());
UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, getClass().getName(),
"stop", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
"UIMAEE_exception__WARNING", e);
}
}
}
try {
for (Entry<String, UimaTransport> transport : transports.entrySet()) {
transport.getValue().stopIt();
}
} catch (Exception e) {
if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.WARNING)) {
UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, CLASS_NAME.getName(),
"stop", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
"UIMAEE_service_exception_WARNING", getComponentName());
UIMAFramework.getLogger(CLASS_NAME).logrb(Level.WARNING, getClass().getName(),
"stop", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
"UIMAEE_exception__WARNING", e);
}
}
if (cmOutstandingCASes != null) {
if (!cmOutstandingCASes.isEmpty()) {
// If there are outstanding CASes, force them to be released
// If the CM is blocking on getCAS() this will unblock it and
// enable termination. Otherwise, a hang may occur
Iterator<String> it = cmOutstandingCASes.keySet().iterator();
while (it.hasNext()) {
String casId = it.next();
try {
CacheEntry entry = getInProcessCache().getCacheEntryForCAS(casId);
if (entry != null && entry.getCas() != null) {
if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.INFO)) {
UIMAFramework.getLogger(CLASS_NAME).logrb(Level.INFO, CLASS_NAME.getName(), "stop",
UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE, "UIMAEE_force_cas_release___INFO",
new Object[] { getComponentName(), casId });
}
// Force CAS release to unblock CM thread
entry.getCas().release();
}
} catch (Exception e) {
if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.INFO)) {
UIMAFramework.getLogger(CLASS_NAME).logrb(Level.INFO, CLASS_NAME.getName(), "stop",
UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE, "UIMAEE_parent_cas_notin_cache__INFO",
new Object[] { getComponentName(), casId });
}
}
}
}
cmOutstandingCASes.clear();
}
if (aeList != null) {
aeList.clear();
aeList = null;
}
if (UIMAFramework.getLogger(CLASS_NAME).isLoggable(Level.INFO)) {
UIMAFramework.getLogger(CLASS_NAME).logrb(Level.INFO, CLASS_NAME.getName(), "stop",
UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE, "UIMAEE_service_stopped__INFO",
new Object[] { getComponentName()});
}
// Only top-level service may call exit. Dont exit if running jUnit tests.
if (isTopLevelComponent() && System.getProperty("dontKill") == null) {
System.exit(0);
}
}