You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by sp...@apache.org on 2006/05/09 15:27:35 UTC

svn commit: r405427 - in /geronimo/devtools/eclipse-plugin/trunk/plugins: org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/ org.apache.geronimo.st.v1.core/src/org/apache/geronimo/st/v1/core/ org.apache.geronimo.st.v11.core/src/org/apache/ger...

Author: sppatel
Date: Tue May  9 06:27:33 2006
New Revision: 405427

URL: http://svn.apache.org/viewcvs?rev=405427&view=rev
Log:
handle updateserver state for multiple servers

Modified:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/UpdateServerStateTask.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v1.core/src/org/apache/geronimo/st/v1/core/GeronimoServerBehaviour.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v11.core/src/org/apache/geronimo/st/v11/core/GeronimoServerBehaviour.java

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/UpdateServerStateTask.java
URL: http://svn.apache.org/viewcvs/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/UpdateServerStateTask.java?rev=405427&r1=405426&r2=405427&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/UpdateServerStateTask.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.core/src/org/apache/geronimo/st/core/UpdateServerStateTask.java Tue May  9 06:27:33 2006
@@ -19,11 +19,13 @@
 
 import org.apache.geronimo.st.core.internal.Trace;
 import org.eclipse.wst.server.core.IServer;
+import org.eclipse.wst.server.core.ServerCore;
 import org.eclipse.wst.server.core.internal.Server;
 
 public class UpdateServerStateTask extends TimerTask {
 
 	private IGeronimoServerBehavior delegate;
+
 	private IServer server;
 
 	public UpdateServerStateTask(IGeronimoServerBehavior delegate,
@@ -42,30 +44,68 @@
 		synchronized (delegate) {
 			Trace.trace(Trace.INFO, "--> UpdateServerStateTask.run() "
 					+ server.getName());
-			try {
-				switch (server.getServerState()) {
-				case IServer.STATE_STOPPED:
-					if (delegate.isKernelAlive())
-						updateFromStopped();
-					break;
-				case IServer.STATE_STARTING:
-					if (delegate.isKernelAlive())
-						updateFromStarting();
-					else
-						delegate.setServerStopped();
-					break;
-				case IServer.STATE_STARTED:
-					updateFromStarted();
-					break;
+
+			// Only start the task if the connection URL is unqiue for all
+			// g-servers or if other servers that are different instances but do
+			// share the same connection URL's are stopped
+			IGeronimoServer thisServer = (IGeronimoServer) this.server
+					.loadAdapter(IGeronimoServer.class, null);
+
+			IServer[] allServers = ServerCore.getServers();
+			boolean allUnique = true;
+			boolean allNonUniqueStopped = true;
+			for (int i = 0; i < allServers.length; i++) {
+				IServer server = allServers[i];
+				IGeronimoServer gs = (IGeronimoServer) server.loadAdapter(
+						IGeronimoServer.class, null);
+				if (gs != null && !this.server.getId().equals(server.getId())) {
+					if (gs.getJMXServiceURL().equals(
+							thisServer.getJMXServiceURL())) {
+						allUnique = false;
+						if (!server.getRuntime().getLocation().equals(
+								this.server.getRuntime().getLocation())
+								&& server.getServerState() != IServer.STATE_STOPPED) {
+							allNonUniqueStopped = false;
+						}
+					}
 				}
-			} catch (Exception e) {
-				e.printStackTrace();
 			}
+
+			Trace.trace(Trace.INFO, "allUnique = " + allUnique
+					+ ", allNonUniqueStopped = " + allNonUniqueStopped);
+
+			if (allUnique || allNonUniqueStopped) {
+				Trace.trace(Trace.INFO, "updating state...");
+				updateServerState();
+			}
+
 			Trace.trace(Trace.INFO, "<-- UpdateServerStateTask.run() "
 					+ server.getName());
 		}
 	}
 
+	private void updateServerState() {
+		try {
+			switch (server.getServerState()) {
+			case IServer.STATE_STOPPED:
+				if (delegate.isKernelAlive())
+					updateFromStopped();
+				break;
+			case IServer.STATE_STARTING:
+				if (delegate.isKernelAlive())
+					updateFromStarting();
+				else
+					delegate.setServerStopped();
+				break;
+			case IServer.STATE_STARTED:
+				updateFromStarted();
+				break;
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
 	private void updateFromStopped() {
 		if (isFullyStarted()) {
 			delegate.setServerStarted();
@@ -83,11 +123,13 @@
 		if (!isFullyStarted())
 			delegate.setServerStopped();
 	}
-	
+
 	private boolean isFullyStarted() {
 		ClassLoader old = Thread.currentThread().getContextClassLoader();
 		try {
-			Thread.currentThread().setContextClassLoader(((GenericGeronimoServerBehaviour) delegate).getContextClassLoader());
+			Thread.currentThread().setContextClassLoader(
+					((GenericGeronimoServerBehaviour) delegate)
+							.getContextClassLoader());
 			return delegate.isFullyStarted();
 		} finally {
 			Thread.currentThread().setContextClassLoader(old);

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v1.core/src/org/apache/geronimo/st/v1/core/GeronimoServerBehaviour.java
URL: http://svn.apache.org/viewcvs/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v1.core/src/org/apache/geronimo/st/v1/core/GeronimoServerBehaviour.java?rev=405427&r1=405426&r2=405427&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v1.core/src/org/apache/geronimo/st/v1/core/GeronimoServerBehaviour.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v1.core/src/org/apache/geronimo/st/v1/core/GeronimoServerBehaviour.java Tue May  9 06:27:33 2006
@@ -89,7 +89,6 @@
 			map.put("jmx.remote.credentials", new String[] { user, password });
 			try {
 				String url = getGeronimoServer().getJMXServiceURL();
-				Trace.trace(Trace.INFO, "URL = " + url);
 				if (url == null)
 					return null;
 				JMXServiceURL address = new JMXServiceURL(url);
@@ -97,11 +96,11 @@
 					JMXConnector jmxConnector = JMXConnectorFactory.connect(address, map);
 					MBeanServerConnection mbServerConnection = jmxConnector.getMBeanServerConnection();
 					kernel = new KernelDelegate(mbServerConnection);
-					Trace.trace(Trace.INFO, "Connected to kernel.");
+					Trace.trace(Trace.INFO, "Connected to kernel: " + url);
 				} catch (SecurityException e) {
 					throw e;
 				} catch (Exception e) {
-					Trace.trace(Trace.WARNING, "Kernel connection failed.");
+					Trace.trace(Trace.WARNING, "Kernel connection failed." + url);
 				}
 			} catch (MalformedURLException e) {
 				e.printStackTrace();

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v11.core/src/org/apache/geronimo/st/v11/core/GeronimoServerBehaviour.java
URL: http://svn.apache.org/viewcvs/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v11.core/src/org/apache/geronimo/st/v11/core/GeronimoServerBehaviour.java?rev=405427&r1=405426&r2=405427&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v11.core/src/org/apache/geronimo/st/v11/core/GeronimoServerBehaviour.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v11.core/src/org/apache/geronimo/st/v11/core/GeronimoServerBehaviour.java Tue May  9 06:27:33 2006
@@ -98,7 +98,6 @@
 			map.put("jmx.remote.credentials", new String[] { user, password });
 			try {
 				String url = getGeronimoServer().getJMXServiceURL();
-				Trace.trace(Trace.INFO, "URL = " + url);
 				if (url == null)
 					return null;
 				JMXServiceURL address = new JMXServiceURL(url);
@@ -106,11 +105,11 @@
 					JMXConnector jmxConnector = JMXConnectorFactory.connect(address, map);
 					MBeanServerConnection mbServerConnection = jmxConnector.getMBeanServerConnection();
 					kernel = new KernelDelegate(mbServerConnection);
-					Trace.trace(Trace.INFO, "Connected to kernel.");
+					Trace.trace(Trace.INFO, "Connected to kernel." + url);
 				} catch (SecurityException e) {
 					throw e;
 				} catch (Exception e) {
-					Trace.trace(Trace.WARNING, "Kernel connection failed.");
+					Trace.trace(Trace.WARNING, "Kernel connection failed." + url);
 				}
 			} catch (MalformedURLException e) {
 				e.printStackTrace();