You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by de...@apache.org on 2014/09/10 22:53:02 UTC

svn commit: r1624125 - in /uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main: java/org/apache/uima/ducc/ws/registry/ java/org/apache/uima/ducc/ws/registry/sort/ java/org/apache/uima/ducc/ws/server/ webapp/root/

Author: degenaro
Date: Wed Sep 10 20:53:01 2014
New Revision: 1624125

URL: http://svn.apache.org/r1624125
Log:
UIMA-4007 DUCC Web Server (WS) display of Services State and Start State w/hovers

Modified:
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServiceInterpreter.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/IServiceAdapter.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServiceAdapter.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
    uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/services.jsp

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java?rev=1624125&r1=1624124&r2=1624125&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/IServicesRegistry.java Wed Sep 10 20:53:01 2014
@@ -36,6 +36,7 @@ public class IServicesRegistry {
 	public static final String numeric_id = IStateServices.numeric_id;
 	public static final String ping_active = IStateServices.ping_active;
 	public static final String ping_only = IStateServices.ping_only;
+	public static final String service_alive = IStateServices.service_alive;
 	public static final String service_class = IStateServices.service_class;
 	public static final String service_dependency = IStateServices.service_dependency;
 	public static final String service_healthy = IStateServices.service_healthy;

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServiceInterpreter.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServiceInterpreter.java?rev=1624125&r1=1624124&r2=1624125&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServiceInterpreter.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/ServiceInterpreter.java Wed Sep 10 20:53:01 2014
@@ -82,26 +82,22 @@ public class ServiceInterpreter {
 		return retVal;
 	}
 	
-	private String placeholderPopup = "";
+	private String placeholderPingerStatus = "";
 	
-	public String getPopup() {
-		String location = "getPopup";
-		String retVal = placeholderPopup;
+	public String getPingerStatus() {
+		String location = "getPingerStatus";
+		String retVal = placeholderPingerStatus;
 		try {
 			String state = getState();
 			retVal = "The service is "+state;
 			if(state.equalsIgnoreCase(ServiceState.Waiting.name())) {
-				retVal = "Pinger is starting";
-				/*
-				String type = getUninterpreted(propertiesMeta, IServicesRegistry.service_type);
-				type = type.trim();
-				if(type.equalsIgnoreCase("CUSTOM")) {
+				boolean pingActive = getPingActive();
+				if(pingActive) {
 					retVal = "Pinger is starting";
 				}
 				else {
-					retVal = "Pinger and Service are starting";
+					retVal = "Pinger is unable to start";
 				}
-				*/
 			}
 			else if(state.equalsIgnoreCase(ServiceState.Available.name())) {
 				Boolean value = getPingActive();
@@ -109,12 +105,6 @@ public class ServiceInterpreter {
 					retVal = "Pinger is not active";
 				}
 			}
-			else if(state.equalsIgnoreCase(ServiceState.Waiting.name())) {
-				Boolean value = getPingActive();
-				if(!value) {
-					retVal = "Pinger is not active";
-				}
-			}
 		}
 		catch(Exception e) {
 			duccLogger.debug(location, jobid, e);
@@ -122,6 +112,40 @@ public class ServiceInterpreter {
 		return retVal;
 	}
 	
+	public Boolean getServiceAlive() {
+		String location = "getServiceAlive";
+		boolean retVal = true;
+		try {
+			String value = getValue(meta,IServicesRegistry.service_alive,Boolean.valueOf(retVal).toString());
+			retVal = Boolean.valueOf(value);
+		}
+		catch(Exception e) {
+			duccLogger.error(location, jobid, e);
+		}
+		return retVal;
+	}
+	
+	public boolean isServiceAlive() {
+		return getServiceAlive();
+	}
+	
+	public Boolean getServiceHealthy() {
+		String location = "getServiceHealthy";
+		boolean retVal = true;
+		try {
+			String value = getValue(meta,IServicesRegistry.service_healthy,Boolean.valueOf(retVal).toString());
+			retVal = Boolean.valueOf(value);
+		}
+		catch(Exception e) {
+			duccLogger.error(location, jobid, e);
+		}
+		return retVal;
+	}
+	
+	public boolean isServiceHealthy() {
+		return getServiceHealthy();
+	}
+	
 	private Integer placeholderId = new Integer(-1);
 	
 	public Integer getId() {
@@ -206,8 +230,8 @@ public class ServiceInterpreter {
 		return retVal;
 	}
 	
-	public Boolean getHealth() {
-		String location = "getHealth";
+	public Boolean getPingerReportedServiceHealth() {
+		String location = "getPingerReportedServiceHealth";
 		boolean retVal = true;
 		try {
 			String value = getValue(meta,IServicesRegistry.service_healthy,Boolean.valueOf(retVal).toString());
@@ -220,7 +244,7 @@ public class ServiceInterpreter {
 	}
 	
 	public String getServiceClass() {
-		String location = "getServiceClass";
+		String location	 = "getServiceClass";
 		String retVal = "";
 		try {
 			String serviceClass = getValue(meta,IServicesRegistry.service_class,"");
@@ -381,6 +405,10 @@ public class ServiceInterpreter {
 		return retVal;
 	}
 	
+	private boolean isAutostart() {
+		return getAutostart();
+	}
+	
 	private Boolean getReference() {
 		String location = "getReference";
 		Boolean retVal = new Boolean(true);
@@ -401,6 +429,10 @@ public class ServiceInterpreter {
 		return retVal;
 	}
 	
+	private boolean isReference() {
+		return getReference();
+	}
+	
 	private Boolean isImplementers() {
 		String location = "isImplementers";
 		Boolean retVal = new Boolean(false);
@@ -445,34 +477,49 @@ public class ServiceInterpreter {
 		return retVal;
 	}
 	
-	public enum StartMode { 
-		Immediate("definition: New instances are automatically started at system boot time and at initial regsitration time."), 
-		Reference("definition: New instances are automatically started on-demand, unused instances are automatically stopped after linger period."), 
-		Manual("definition: Instances are not automatically started or stopped.");
-		
-		private String description;
+	public enum StartState { 
+		Autostart(), 
+		Reference(), 
+		Manual(),
+		Stopped(),
+		Unknown();
 		
-		private StartMode(String value) {
-			description = value;
-		}
-		
-		public String getDescription() {
-			return description;
+		private StartState() {
 		}
 	}
 	
-	public StartMode getStartMode() {
-		StartMode retVal = StartMode.Reference;
-		Boolean autostart = getAutostart();
-		Boolean reference = getReference();
-		if(autostart) {
-			retVal = StartMode.Immediate;
+	private int getStateOrdinality() {
+		String location = "getStateOrdinality";
+		int retVal = 0;
+		try {
+			String state = getState();
+			ServiceState serviceState = ServiceState.valueOf(state);
+			retVal = serviceState.ordinality();
+		}
+		catch(Exception e) {
+			duccLogger.error(location, jobid, e);
 		}
-		else if(reference) {
-			retVal = StartMode.Reference;
+		return retVal;
+	}
+	
+	public StartState getStartState() {
+		StartState retVal = StartState.Unknown;
+		if(isAutostart()) {
+			retVal = StartState.Autostart;
 		}
 		else {
-			retVal = StartMode.Manual;
+			int ordinality = getStateOrdinality();
+			if(ordinality > 3) {
+				if(isReference()) {
+					retVal = StartState.Reference;
+				}
+				else {
+					retVal = StartState.Manual;
+				}
+			}
+			else if(ordinality < 4) {
+				retVal = StartState.Stopped;
+			}
 		}
 		return retVal;
 	}

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/IServiceAdapter.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/IServiceAdapter.java?rev=1624125&r1=1624124&r2=1624125&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/IServiceAdapter.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/IServiceAdapter.java Wed Sep 10 20:53:01 2014
@@ -21,7 +21,7 @@ package org.apache.uima.ducc.ws.registry
 import java.util.ArrayList;
 import java.util.Properties;
 
-import org.apache.uima.ducc.ws.registry.ServiceInterpreter.StartMode;
+import org.apache.uima.ducc.ws.registry.ServiceInterpreter.StartState;
 
 public interface IServiceAdapter {
 	
@@ -38,15 +38,22 @@ public interface IServiceAdapter {
 	public long getSwapMax();
 	public long getSize();
 	
+	public boolean isStateAvailable();
+	public boolean isStateActive();
+	
 	public boolean isPingOnly();
 	public boolean isPingActive();
 	public boolean isRegistered();
-	public boolean isViable();
 	public boolean isAlert();
 	public boolean isDisabled();
-	public boolean getHealth();
+	public boolean isServiceAlive();
+	public boolean isServiceHealthy();
+	public boolean isServiceIssue();
+	
+	public Boolean getServiceAlive();
+	public Boolean getServiceHealthy();
 	
-	public String getPopup();
+	public String getPingerStatus();
 	public String getErrorText();
 	public String getName();
 	public String getState();
@@ -56,7 +63,7 @@ public interface IServiceAdapter {
 	public String getDescription();
 	public String getDisableReason();
 	
-	public StartMode getStartMode();
+	public StartState getStartState();
 	
 	public ArrayList<String> getImplementors();
 	

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServiceAdapter.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServiceAdapter.java?rev=1624125&r1=1624124&r2=1624125&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServiceAdapter.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServiceAdapter.java Wed Sep 10 20:53:01 2014
@@ -26,7 +26,7 @@ import org.apache.uima.ducc.common.utils
 import org.apache.uima.ducc.transport.event.sm.IService.ServiceState;
 import org.apache.uima.ducc.ws.DuccDataHelper;
 import org.apache.uima.ducc.ws.registry.ServiceInterpreter;
-import org.apache.uima.ducc.ws.registry.ServiceInterpreter.StartMode;
+import org.apache.uima.ducc.ws.registry.ServiceInterpreter.StartState;
 import org.apache.uima.ducc.ws.registry.ServicesRegistry;
 
 public class ServiceAdapter implements IServiceAdapter {
@@ -134,20 +134,16 @@ public class ServiceAdapter implements I
 	}
 	
 	private boolean isHealthRelevant() {
-		boolean retVal = true;
-		String value = getState();
-		if(value != null) {
-			if(value.equalsIgnoreCase(ServiceState.Starting.name())) {
-				retVal = false;
-			}
-			else if(value.equalsIgnoreCase(ServiceState.Waiting.name())) {
-				retVal = false;
-			}
-			else if(value.equalsIgnoreCase(ServiceState.Initializing.name())) {
-				retVal = false;
-			}
-			else if(value.equalsIgnoreCase(ServiceState.Stopped.name())) {
-				retVal = false;
+		boolean retVal = false;
+		if(isPingActive()) {
+			String value = getState();
+			if(value != null) {
+				if(value.equalsIgnoreCase(ServiceState.Available.name())) {
+					retVal = true;
+				}
+				else if(value.equalsIgnoreCase(ServiceState.Waiting.name())) {
+					retVal = true;
+				}
 			}
 		}
 		return retVal;
@@ -155,10 +151,13 @@ public class ServiceAdapter implements I
 	
 	private boolean isFaultHealth() {
 		boolean retVal = false;
-		boolean value = getHealth();
+		boolean value = isServiceHealthy();
 		if(!value) {
-			if(isHealthRelevant()) {
-				retVal = true;
+			value = isServiceAlive();
+			if(!value) {
+				if(isHealthRelevant()) {
+					retVal = true;
+				}
 			}
 		}
 		return retVal;
@@ -226,7 +225,7 @@ public class ServiceAdapter implements I
 	}
 	
 	@Override
-	public boolean isViable() {
+	public boolean isStateAvailable() {
 		boolean retVal = false;
 		String value = getState();
 		if(value != null) {
@@ -238,6 +237,21 @@ public class ServiceAdapter implements I
 	}
 	
 	@Override
+	public boolean isStateActive() {
+		boolean retVal = false;
+		String value = getState();
+		if(value != null) {
+			if(value.equalsIgnoreCase(ServiceState.Available.name())) {
+				retVal = true;
+			}
+			else if(value.equalsIgnoreCase(ServiceState.Waiting.name())) {
+				retVal = true;
+			}
+		}
+		return retVal;
+	}
+	
+	@Override
 	public boolean isAlert() {
 		boolean retVal = false;
 		if(isFaultError()) {
@@ -251,18 +265,47 @@ public class ServiceAdapter implements I
 		}
 		return retVal;
 	}
+
+	@Override
+	public Boolean getServiceAlive() {
+		return si.getServiceAlive();
+	}
 	
 	@Override
-	public boolean isDisabled() {
-		boolean retVal = si.isDisabled();
+	public boolean isServiceAlive() {
+		boolean retVal = si.isServiceAlive();
 		return retVal;
 	}
 	
 	@Override
-	public boolean getHealth() {
-		boolean value = si.getHealth();
+	public Boolean getServiceHealthy() {
+		Boolean value = si.getServiceHealthy();
 		return value;
 	}
+	
+	@Override
+	public boolean isServiceHealthy() {
+		boolean retVal = si.isServiceHealthy();
+		return retVal;
+	}
+	
+	@Override
+	public boolean isServiceIssue() {
+		boolean retVal = false;
+		if(!isServiceHealthy()) {
+			retVal = true;
+		}
+		else if(!isServiceAlive()) {
+			retVal = true;
+		}
+		return retVal;
+	}
+	
+	@Override
+	public boolean isDisabled() {
+		boolean retVal = si.isDisabled();
+		return retVal;
+	}
 
 	private String getServiceClass() {
 		String value = si.getServiceClass();
@@ -270,11 +313,11 @@ public class ServiceAdapter implements I
 	}
 	
 	@Override
-	public String getPopup() {
-		String value = si.getPopup();
+	public String getPingerStatus() {
+		String value = si.getPingerStatus();
 		return value;
 	}
-	
+
 	@Override
 	public String getErrorText() {
 		String value = si.getErrorText();
@@ -324,8 +367,8 @@ public class ServiceAdapter implements I
 	}
 	
 	@Override
-	public StartMode getStartMode() {
-		StartMode value = si.getStartMode();
+	public StartState getStartState() {
+		StartState value = si.getStartState();
 		return value;
 	}
 	
@@ -394,5 +437,5 @@ public class ServiceAdapter implements I
 	public ArrayList<String> getDependentReservations() {
 		return dependentReservations;
 	}
-
+	
 }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java?rev=1624125&r1=1624124&r2=1624125&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/registry/sort/ServicesHelper.java Wed Sep 10 20:53:01 2014
@@ -37,13 +37,23 @@ public class ServicesHelper {
 	
 	public String getStateHover(IServiceAdapter serviceAdapter) {
 		StringBuffer retVal = new StringBuffer();
-		String popUp = serviceAdapter.getPopup();
-		if(popUp != null) {
-			if(popUp.length() > 0) {
+		String pingerStatus = serviceAdapter.getPingerStatus();
+		if(pingerStatus != null) {
+			if(pingerStatus.length() > 0) {
 				if(retVal.length() > 0) {
 					retVal.append("\n");
 				}
-				retVal.append(popUp);
+				retVal.append(pingerStatus);
+			}
+		}
+		if(!serviceAdapter.isPingActive()) {
+			if(serviceAdapter.isServiceIssue()) {
+				if(serviceAdapter.isStateActive()) {
+					if(retVal.length() > 0) {
+						retVal.append("\n");
+					}
+					retVal.append("Service not responding to pinger");
+				}
 			}
 		}
 		String errorText = serviceAdapter.getErrorText();
@@ -62,7 +72,9 @@ public class ServicesHelper {
 					if(retVal.length() > 0) {
 						retVal.append("\n");
 					}
+					//retVal.append("<pre>");
 					retVal.append(statistics);
+					//retVal.append("</pre>");
 				}
 			}
 		}

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1624125&r1=1624124&r2=1624125&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Wed Sep 10 20:53:01 2014
@@ -99,7 +99,7 @@ import org.apache.uima.ducc.ws.broker.Br
 import org.apache.uima.ducc.ws.broker.BrokerHelper.BrokerAttribute;
 import org.apache.uima.ducc.ws.registry.IServicesRegistry;
 import org.apache.uima.ducc.ws.registry.ServiceInterpreter;
-import org.apache.uima.ducc.ws.registry.ServiceInterpreter.StartMode;
+import org.apache.uima.ducc.ws.registry.ServiceInterpreter.StartState;
 import org.apache.uima.ducc.ws.registry.ServicesRegistry;
 import org.apache.uima.ducc.ws.registry.ServicesRegistryMapPayload;
 import org.apache.uima.ducc.ws.sort.JobDetailsProcesses;
@@ -2462,7 +2462,7 @@ public class DuccHandler extends DuccAbs
 		String name = request.getParameter("name");
 		String instances = "?";
 		String deployments = "?";
-		StartMode startMode = StartMode.Reference;
+		StartState startState = StartState.Unknown;
 		boolean disabled = false;
 		String disableReason = "";
 		
@@ -2475,7 +2475,7 @@ public class DuccHandler extends DuccAbs
 			id = ""+si.getId();
 			instances = ""+si.getInstances();
 			deployments = ""+si.getDeployments();
-			startMode = si.getStartMode();
+			startState = si.getStartState();
 			disabled = si.isDisabled();
 			disableReason = si.getDisableReason();
 		}
@@ -2504,9 +2504,9 @@ public class DuccHandler extends DuccAbs
 		sb.append(deployments);
 		sb.append("&nbsp");
 		// start-mode
-		sb.append("<th title=\""+startMode.getDescription()+"\">");
-		sb.append("StartMode: ");
-		sb.append(startMode.name());
+		sb.append("<th>");
+		sb.append("StartState: ");
+		sb.append(startState.name());
 		sb.append("&nbsp");
 		// disabled
 		if(disabled) {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java?rev=1624125&r1=1624124&r2=1624125&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerClassic.java Wed Sep 10 20:53:01 2014
@@ -75,7 +75,7 @@ import org.apache.uima.ducc.ws.MachineIn
 import org.apache.uima.ducc.ws.broker.BrokerHelper;
 import org.apache.uima.ducc.ws.broker.BrokerHelper.FrameworkAttribute;
 import org.apache.uima.ducc.ws.broker.EntityInfo;
-import org.apache.uima.ducc.ws.registry.ServiceInterpreter.StartMode;
+import org.apache.uima.ducc.ws.registry.ServiceInterpreter.StartState;
 import org.apache.uima.ducc.ws.registry.ServicesRegistry;
 import org.apache.uima.ducc.ws.registry.sort.IServiceAdapter;
 import org.apache.uima.ducc.ws.registry.sort.ServicesHelper;
@@ -915,7 +915,7 @@ public class DuccHandlerClassic extends 
 				sb.append("<td>");
 				String state = service.getState();
 				boolean alert = service.isAlert();
-				boolean viable = service.isViable();
+				boolean available = service.isStateAvailable();
 				if(alert) {
 					state += "+Alert";
 				}
@@ -923,7 +923,7 @@ public class DuccHandlerClassic extends 
 				if(alert) {
 					style = "class=\"health_red\"";
 				}
-				else if(viable) {
+				else if(available) {
 					style = "class=\"health_green\"";
 				}
 				String stateHover = ServicesHelper.getInstance().getStateHover(service);
@@ -949,22 +949,19 @@ public class DuccHandlerClassic extends 
 				sb.append("<td align=\"right\">");
 				sb.append(deployments);
 				sb.append("</td>");
-				// Start-Mode
-				StartMode startMode = service.getStartMode();
+				// Start-State
+				StartState startState = service.getStartState();
 				sb.append("<td align=\"right\">");
-				StringBuffer startModeHover = new StringBuffer();
-				String startModeColor = "class=\"health_black\"";
+				sb.append("<span>");
+				sb.append(startState.name());
 				if(service.isDisabled()) {
-					String disableReason = service.getDisableReason();
-					if(disableReason.length() > 0) {
-						startModeHover.append(disableReason+"\n");
-					}
-					startModeHover.append("Disabled, no further starts will occur\n");
-					startModeColor = "class=\"health_red\"";
-				}
-				startModeHover.append(startMode.getDescription());
-				sb.append("<span "+startModeColor+" title=\""+startModeHover+"\">");
-				sb.append(startMode.name());
+					sb.append("<br>");
+					String health = "class=\"health_red\"";
+					String reason = "title=\""+service.getDisableReason()+"\"";
+					sb.append("<span "+health+" "+reason+">");
+					sb.append("Disabled");
+					sb.append("</span>");
+				}
 				sb.append("</span>");
 				sb.append("</td>");
 				// User

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java?rev=1624125&r1=1624124&r2=1624125&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java Wed Sep 10 20:53:01 2014
@@ -78,10 +78,10 @@ import org.apache.uima.ducc.ws.JobInfo;
 import org.apache.uima.ducc.ws.MachineInfo;
 import org.apache.uima.ducc.ws.ReservationInfo;
 import org.apache.uima.ducc.ws.broker.BrokerHelper;
-import org.apache.uima.ducc.ws.broker.EntityInfo;
 import org.apache.uima.ducc.ws.broker.BrokerHelper.FrameworkAttribute;
+import org.apache.uima.ducc.ws.broker.EntityInfo;
+import org.apache.uima.ducc.ws.registry.ServiceInterpreter.StartState;
 import org.apache.uima.ducc.ws.registry.ServicesRegistry;
-import org.apache.uima.ducc.ws.registry.ServiceInterpreter.StartMode;
 import org.apache.uima.ducc.ws.registry.sort.IServiceAdapter;
 import org.apache.uima.ducc.ws.registry.sort.ServicesHelper;
 import org.apache.uima.ducc.ws.registry.sort.ServicesSortCache;
@@ -1047,7 +1047,7 @@ public class DuccHandlerJsonFormat exten
 				col = new StringBuffer();
 				String state = service.getState();
 				boolean alert = service.isAlert();
-				boolean viable = service.isViable();
+				boolean available = service.isStateAvailable();
 				if(alert) {
 					state += "+Alert";
 				}
@@ -1055,7 +1055,7 @@ public class DuccHandlerJsonFormat exten
 				if(alert) {
 					style = "class=\"health_red\"";
 				}
-				else if(viable) {
+				else if(available) {
 					style = "class=\"health_green\"";
 				}
 				String stateHover = ServicesHelper.getInstance().getStateHover(service);
@@ -1083,20 +1083,17 @@ public class DuccHandlerJsonFormat exten
 				row.add(new JsonPrimitive(col.toString()));
 				// Start-Mode
 				col = new StringBuffer();
-				StartMode startMode = service.getStartMode();
-				StringBuffer startModeHover = new StringBuffer();
-				String startModeColor = "class=\"health_black\"";
+				StartState startState = service.getStartState();
+				col.append("<span>");
+				col.append(startState.name());
 				if(service.isDisabled()) {
-					String disableReason = service.getDisableReason();
-					if(disableReason.length() > 0) {
-						startModeHover.append(disableReason+"\n");
-					}
-					startModeHover.append("Disabled, no further starts will occur\n");
-					startModeColor = "class=\"health_red\"";
-				}
-				startModeHover.append(startMode.getDescription());
-				col.append("<span "+startModeColor+" title=\""+startModeHover+"\">");
-				col.append(startMode.name());
+					col.append("<br>");
+					String health = "class=\"health_red\"";
+					String reason = "title=\""+service.getDisableReason()+"\"";
+					col.append("<span "+health+" "+reason+">");
+					col.append("Disabled");
+					col.append("</span>");
+				}
 				col.append("</span>");
 				row.add(new JsonPrimitive(col.toString()));
 				// User

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/services.jsp
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/services.jsp?rev=1624125&r1=1624124&r2=1624125&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/services.jsp (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/webapp/root/services.jsp Wed Sep 10 20:53:01 2014
@@ -115,7 +115,7 @@ if (table_style.equals("scroll")) {
 		<th title="The time this service was last used">Last Use</th>
 		<th title="The service number of instances registered">Instances</th>
 		<th title="The service number of processes currently started">Deployments</th>
-		<th title="The service start mode">Start<br>Mode</th>
+		<th title="The service start state">Start<br>State</th>
 		<th class="ducc-no-filter" id="user_column_heading" title="The service owning user">User</th>
 		<th title="The service scheduling class">Class</th>
 		<th title="The count for all service processes of major faults which required loading a memory page from disk">Pgin</th>
@@ -151,7 +151,7 @@ if (table_style.equals("classic")) {
 		<th title="The time this service was last used">Last Use</th>
         <th title="The service number of instances registered">Instances</th>
         <th title="The service number of processes currently started">Deployments</th>
-		<th title="The service start mode">Start<br>Mode</th>
+		<th title="The service start state">Start<br>State</th>
 		<th class="ducc-no-filter" id="user_column_heading" title="The service owning user">User</th>
 		<th title="The service scheduling class">Class</th>
 		<th class="sorttable_numeric" title="The count for all service processes of major faults which required loading a memory page from disk">Pgin</th>