You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bu...@apache.org on 2015/03/13 15:23:59 UTC
svn commit: r1666462 - in /uima/sandbox/uima-ducc/trunk:
uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/
uima-ducc-user/src/main/java/org/apache/uima/ducc/user/common/main/
uima-ducc-user/src/main/java/org/apache/uima/ducc/user/jp/
Author: burn
Date: Fri Mar 13 14:23:59 2015
New Revision: 1666462
URL: http://svn.apache.org/r1666462
Log:
UIMA-4253 Moved Ducc-User container crossing messages so can easily verify that the correct log4j setup is done on each side
Modified:
uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccService.java
uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/common/main/DuccJobService.java
uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/jp/DuccAbstractProcessContainer.java
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccService.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccService.java?rev=1666462&r1=1666461&r2=1666462&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccService.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccService.java Fri Mar 13 14:23:59 2015
@@ -35,7 +35,6 @@ import org.apache.uima.ducc.common.compo
import org.apache.uima.ducc.common.exception.DuccComponentInitializationException;
import org.apache.uima.ducc.common.utils.DuccLogger;
import org.apache.uima.ducc.common.utils.Utils;
-import org.apache.uima.ducc.user.common.investment.Investment;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/common/main/DuccJobService.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/common/main/DuccJobService.java?rev=1666462&r1=1666461&r2=1666462&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/common/main/DuccJobService.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/common/main/DuccJobService.java Fri Mar 13 14:23:59 2015
@@ -99,32 +99,37 @@ public class DuccJobService {
// cache current context classloader
ClassLoader sysCL = Thread.currentThread().getContextClassLoader();
+
// Fetch a classpath for the fenced Ducc container
- String duccContainerClasspath = System
- .getProperty("ducc.deploy.DuccClasspath");//"ducc.deploy.JpDuccClasspath");
+ String duccContainerClasspath = System.getProperty("ducc.deploy.DuccClasspath");
URLClassLoader ucl = create(duccContainerClasspath);
- if ( System.getProperty("DEBUG") != null ) {
+ if (System.getProperty("ducc.debug") != null) {
DEBUG = true;
}
if (DEBUG) {
dump(ucl, 4);
}
- System.out.println("DuccJobService.start() >>>>>>>>> Crossing from User Container to Ducc Container");
- Thread.currentThread().setContextClassLoader(ucl);
+ // Load the DuccService class and find its methods of interest
+ Class<?> duccServiceClass = ucl.loadClass("org.apache.uima.ducc.common.main.DuccService");
+ Method bootMethod = duccServiceClass.getMethod("boot", String[].class);
+ Method setProcessorMethod = duccServiceClass.getMethod("setProcessor", Object.class, String[].class);
+ Method registerInvestmentInstanceMethod = duccServiceClass.getMethod("registerInvestmentInstance", Object.class);
+ Method startMethod = duccServiceClass.getMethod("start");
- // Create DuccService instance
- Class<?> classToLaunch = ucl.loadClass("org.apache.uima.ducc.common.main.DuccService");
- Object duccContainerInstance = classToLaunch.newInstance();
+ System.out.println("DuccJobService.boot() >>>>>>>>> booting Ducc Container");
- // initialize Ducc fenced container. It calls component's Configuration class
- Method bootMethod = classToLaunch.getMethod("boot", String[].class);
+ // Construct & initialize Ducc fenced container.
+ // It calls component's Configuration class
+ Thread.currentThread().setContextClassLoader(ucl);
+ Object duccContainerInstance = duccServiceClass.newInstance();
bootMethod.invoke(duccContainerInstance, (Object) args);
+ System.out.println("DuccJobService.boot() <<<<<<<< Ducc Container initialized");
+
// below property is set by component's Configuration class. It can also
// be provided on the command line in case a custom processor is needed.
- String processorClass = System
- .getProperty("ducc.deploy.JpProcessorClass");
+ String processorClass = System.getProperty("ducc.deploy.JpProcessorClass");
// Instantiate process container where the actual analysis will be done.
// Currently there are three containers:
@@ -139,20 +144,19 @@ public class DuccJobService {
Class<?> processorClz = sysCL.loadClass(processorClass);
IProcessContainer pc = (IProcessContainer) processorClz.newInstance();
+ System.out.println("DuccJobService.start() >>>>>>>>> Starting Ducc Container");
+
// Call DuccService.setProcessor() to hand-off instance of the
// process container to the component along with this process args
- Method setProcessorMethod = classToLaunch.getMethod("setProcessor",
- Object.class, String[].class);
setProcessorMethod.invoke(duccContainerInstance, pc, args);
- Method registerInvestmentInstanceMethod = classToLaunch.getMethod("registerInvestmentInstance",
- Object.class);
+ // Hand-off investment object
registerInvestmentInstanceMethod.invoke(duccContainerInstance, investment);
- // Call DuccService.start() to initialize the process
- // and begin processing
- Method startMethod = classToLaunch.getMethod("start");// ,
+ // Call DuccService.start() to initialize the process and begin processing
startMethod.invoke(duccContainerInstance);
+
+ System.out.println("DuccJobService.start() <<<<<<<< Ducc Container ended");
} catch( Throwable t) {
t.printStackTrace();
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/jp/DuccAbstractProcessContainer.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/jp/DuccAbstractProcessContainer.java?rev=1666462&r1=1666461&r2=1666462&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/jp/DuccAbstractProcessContainer.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/jp/DuccAbstractProcessContainer.java Fri Mar 13 14:23:59 2015
@@ -50,6 +50,8 @@ public abstract class DuccAbstractProces
// Map to store DuccUimaSerializer instances. Each has affinity to a thread
protected static Map<Long, DuccUimaSerializer> serializerMap =
new HashMap<Long, DuccUimaSerializer>();
+
+ protected final boolean debug = System.getProperty("ducc.debug") != null;
/**
* This method is called to fetch a WorkItem ID from a given CAS which
@@ -95,67 +97,68 @@ public abstract class DuccAbstractProces
}
}
public int initialize(Properties p, String[] arg) throws Exception {
+ System.out.println("DuccAbstractProcessContainer.initialize() >>>>>>>>> Initializing User Container");
// save current context cl and inject System classloader as
// a context cl before calling user code. This is done in
// user code needs to load resources
+ // Restore user's log4j setting (was hidden from ducc-side logger)
ClassLoader savedCL = Thread.currentThread().getContextClassLoader();
restoreLog4j();
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- System.out.println("DuccAbstractProcessContainer.initialize() >>>>>>>>> Crossed from Ducc Container to User Container");
try {
-
return doInitialize(p, arg);
}finally {
Thread.currentThread().setContextClassLoader(savedCL);
- System.out.println("DuccAbstractProcessContainer.initialize() <<<<<<<< Returned from User Container to Ducc Container");
- System.setProperty("log4j.configuration", "");
+ System.getProperties().remove("log4j.configuration");
+ System.out.println("DuccAbstractProcessContainer.initialize() <<<<<<<< User Container initialized");
}
}
public void deploy() throws Exception {
+ System.out.println("DuccAbstractProcessContainer.deploy() >>>>>>>>> Deploying User Container");
// save current context cl and inject System classloader as
// a context cl before calling user code.
+ // Restore user's log4j setting (was hidden from ducc-side logger)
ClassLoader savedCL = Thread.currentThread().getContextClassLoader();
restoreLog4j();
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- System.out.println("DuccAbstractProcessContainer.deploy() >>>>>>>>> Crossed from Ducc Container to User Container");
try {
doDeploy();
} finally {
Thread.currentThread().setContextClassLoader(savedCL);
- System.out.println("DuccAbstractProcessContainer.deploy() <<<<<<<< Returned from User Container to Ducc Container");
// Pin thread to its own CAS serializer instance
serializerMap.put( Thread.currentThread().getId(), new DuccUimaSerializer());
- if ( System.getProperties().containsKey("log4j.configuration")) {
- // remove log4j configuration property after calling user code
- System.getProperties().remove("log4j.configuration");
- }
+ // remove log4j configuration property after calling user code
+ System.getProperties().remove("log4j.configuration");
+ System.out.println("DuccAbstractProcessContainer.deploy() <<<<<<<< User Container deployed");
}
}
public List<Properties> process(Object xmi) throws Exception {
+ if (debug) System.out.println("DuccAbstractProcessContainer.process() >>>>>>>>> Processing User Container");
// save current context cl and inject System classloader as
// a context cl before calling user code.
+ // No need to restore log4j properties here
ClassLoader savedCL = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
try {
return doProcess(xmi);
}finally {
Thread.currentThread().setContextClassLoader(savedCL);
+ if (debug) System.out.println("DuccAbstractProcessContainer.process() <<<<<<<< User Container processed");
}
}
public void stop() throws Exception {
+ if (debug) System.out.println("DuccAbstractProcessContainer.stop() >>>>>>>>> Stopping User Container");
// save current context cl and inject System classloader as
// a context cl before calling user code.
ClassLoader savedCL = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
- System.out.println("DuccAbstractProcessContainer.stop() >>>>>>>>> Crossed from Ducc Container to User Container");
try {
doStop();
}finally {
Thread.currentThread().setContextClassLoader(savedCL);
- System.out.println("DuccAbstractProcessContainer.stop() <<<<<<<< Returned from User Container to Ducc Container");
-
+ if (debug) System.out.println("DuccAbstractProcessContainer.stop() <<<<<<<< User Container stopped");
}
}