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 2018/02/16 15:17:30 UTC

svn commit: r1824507 - in /uima/uima-ducc/trunk: uima-ducc-common/src/main/java/org/apache/uima/ducc/common/component/ uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/ uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/con...

Author: burn
Date: Fri Feb 16 15:17:30 2018
New Revision: 1824507

URL: http://svn.apache.org/viewvc?rev=1824507&view=rev
Log:
UIMA-5732 Added DuccJobService:stop and updated DuccService:stop

Modified:
    uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/component/AbstractDuccComponent.java
    uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccService.java
    uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java
    uima/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/common/main/DuccJobService.java

Modified: uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/component/AbstractDuccComponent.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/component/AbstractDuccComponent.java?rev=1824507&r1=1824506&r2=1824507&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/component/AbstractDuccComponent.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/component/AbstractDuccComponent.java Fri Feb 16 15:17:30 2018
@@ -24,21 +24,19 @@ import java.net.InetAddress;
 import java.net.ServerSocket;
 import java.rmi.registry.LocateRegistry;
 import java.rmi.server.RMIServerSocketFactory;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.Properties;
 import java.util.Set;
 import java.util.Timer;
 import java.util.TimerTask;
-import java.util.Map.Entry;
 
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
 import javax.management.remote.JMXConnectorServer;
 import javax.management.remote.JMXConnectorServerFactory;
 import javax.management.remote.JMXServiceURL;
-import javax.management.remote.rmi.RMIConnectorServer;
 import javax.net.ServerSocketFactory;
 
 import org.apache.activemq.camel.component.ActiveMQComponent;
@@ -56,9 +54,9 @@ import org.apache.uima.ducc.common.main.
 import org.apache.uima.ducc.common.utils.DuccLogger;
 import org.apache.uima.ducc.common.utils.DuccProperties;
 import org.apache.uima.ducc.common.utils.JdkEvaluator;
-import org.apache.uima.ducc.common.utils.Utils;
 import org.apache.uima.ducc.common.utils.JdkEvaluator.JDKVendor;
 import org.apache.uima.ducc.common.utils.JdkEvaluator.Vendors;
+import org.apache.uima.ducc.common.utils.Utils;
 import org.apache.uima.ducc.common.utils.id.DuccId;
 
 /**

Modified: uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccService.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccService.java?rev=1824507&r1=1824506&r2=1824507&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccService.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-common/src/main/java/org/apache/uima/ducc/common/main/DuccService.java Fri Feb 16 15:17:30 2018
@@ -60,7 +60,7 @@ public class DuccService extends Abstrac
 	public static final String DUCC_PROPERTY_FILE="ducc.deploy.configuration";
 	public static final String DUCC_DEPLOY_COMPONENTS="ducc.deploy.components";
     //private Investment investment = null;
-	private Main main;
+	private Main camelMain;
     private static DuccLogger globalLogger = null;
     private ApplicationContext context;
     Map<String,AbstractDuccComponent> duccComponents = null;
@@ -147,9 +147,9 @@ public class DuccService extends Abstrac
 	public void boot(String[] args) throws Exception {
         String methodName = "boot";
         // create a Main instance
-        main = new Main();
+        camelMain = new Main();
         // enable hangup support so you can press ctrl + c to terminate the JVM
-        main.enableHangupSupport();
+        camelMain.enableHangupSupport();
         //	Load ducc properties file and enrich System properties. It supports
         //  overrides for entries in ducc properties file. Any key in the ducc
         //	property file can be overriden with -D<key>=<value>
@@ -183,7 +183,7 @@ public class DuccService extends Abstrac
 		getDuccLogger().info(methodName, null,"Starting Camel. Use ctrl + c to terminate the JVM.\n");
         // run until you terminate the JVM
         getDuccLogger().info(methodName, null, "Starting Camel. Use ctrl + c to terminate the JVM.\n");
-        main.start();
+        camelMain.start();
   }
 	public AbstractDuccComponent getComponentInstance(String componentKey) {
     //  Extract all Ducc components from Spring container
@@ -259,14 +259,20 @@ public class DuccService extends Abstrac
 
 	}
 	public void stop() throws Exception {
-		if ( main.isStarted() ) {
-			List<CamelContext> ctxList = main.getCamelContexts();
+		AbstractDuccComponent duccComponent = getComponentByInstanceType(IJobProcessor.class);
+		if ( duccComponent instanceof IJobProcessor ) {
+			duccComponent.stop();
+			getDuccLogger().info("stop", null, "Stopped JobComponent");
+		}
+		if ( camelMain.isStarted() ) {
+			List<CamelContext> ctxList = camelMain.getCamelContexts();
 			for( CamelContext ctx : ctxList ) {
 				ctx.stop();
 			}
-			main.stop();
-			getDuccLogger().shutdown();
+			camelMain.stop();
+			getDuccLogger().info("stop", null, "Stopped main");
 		}
+		getDuccLogger().shutdown();
 	}
 
 	private static void setLoggerComponent() {

Modified: uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java
URL: http://svn.apache.org/viewvc/uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java?rev=1824507&r1=1824506&r2=1824507&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-transport/src/main/java/org/apache/uima/ducc/transport/configuration/jp/DuccHttpClient.java Fri Feb 16 15:17:30 2018
@@ -55,7 +55,7 @@ import org.apache.uima.ducc.container.sd
 import org.apache.uima.ducc.container.sd.ServiceRegistry_impl;
 
 public class DuccHttpClient {
-  private final static String REGISTERED_DRIVER = "ducc.deploy.service.driver";
+  private final static String REGISTERED_DRIVER = "ducc.deploy.registered.driver";
   private final static String SERVICE_TYPE      = "ducc.deploy.service.type";
   
 	private DuccLogger logger = new DuccLogger(DuccHttpClient.class);
@@ -97,8 +97,8 @@ public class DuccHttpClient {
 	  return address;
 	}
 	
-	// If the client URL has been provided use it (JD/JP case)
-	// Otherwise look it up in the registry using the entry in -Dducc.deploy.service.driver
+	// If the client URL provided use it (JD/JP case)
+	// Otherwise in the registry lookup "ducc.deploy.registered.driver"
 	// which must specify: <registry-location>?<registry-entry>
 	public void initialize(String jdUrl) throws Exception {
 

Modified: uima/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/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/common/main/DuccJobService.java?rev=1824507&r1=1824506&r2=1824507&view=diff
==============================================================================
--- uima/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/common/main/DuccJobService.java (original)
+++ uima/uima-ducc/trunk/uima-ducc-user/src/main/java/org/apache/uima/ducc/user/common/main/DuccJobService.java Fri Feb 16 15:17:30 2018
@@ -38,6 +38,9 @@ import org.apache.uima.ducc.user.jp.ifac
 public class DuccJobService {
 	boolean DEBUG = false;
 	private Investment investment = null;
+	private Method stopMethod;
+	private Object duccContainerInstance;
+	private Logger logger = Logger.getLogger(DuccJobService.class.getName());
 	
 	public static URLClassLoader create(String classPath)
 			throws MalformedURLException {
@@ -109,9 +112,9 @@ public class DuccJobService {
 			Method setProcessorMethod = duccServiceClass.getMethod("setProcessor", Object.class, String[].class);
 			Method registerInvestmentInstanceMethod = duccServiceClass.getMethod("registerInvestmentInstance", Object.class);
 			Method startMethod = duccServiceClass.getMethod("start");
+			stopMethod = duccServiceClass.getMethod("stop");
 
 			// Establish user's logger early to prevent the DUCC code from accidentally doing so
-			Logger logger = Logger.getLogger(DuccJobService.class.getName());
 			logger.log(Level.INFO, ">>>>>>>>> Booting Ducc Container");
 
 			HashMap<String, String> savedPropsMap = hideLoggingProperties();  // Ensure DUCC doesn't try to use the user's logging setup
@@ -119,7 +122,7 @@ public class DuccJobService {
 			// Construct & initialize Ducc fenced container. 
 			// It calls component's Configuration class
 			Thread.currentThread().setContextClassLoader(ucl);
-			Object duccContainerInstance = duccServiceClass.newInstance();
+			duccContainerInstance = duccServiceClass.newInstance();
 			bootMethod.invoke(duccContainerInstance, (Object) args);
 
 			logger.log(Level.INFO, "<<<<<<<< Ducc Container booted");
@@ -164,6 +167,18 @@ public class DuccJobService {
 
 	}
 	
+	/*
+	 * Terminate the service connection
+	 */
+	public void stop() {
+		try {
+			stopMethod.invoke(duccContainerInstance);
+		} catch( Throwable t) {
+			logger.log(Level.SEVERE, "Stop failed");
+			t.printStackTrace();
+		}
+	}
+
 	public static HashMap<String,String> hideLoggingProperties() {
 		String[] propsToSave = { "log4j.configuration", 
 				                 "java.util.logging.config.file",