Author: sandakith
Date: Thu Dec 6 00:42:55 2007
New Revision: 10606
Log:
Wait till all Tomcat connections have been serviced
Modified:
trunk/wsas/java/modules/core/src/org/wso2/wsas/ServerManagement.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/ServerManagementMBean.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/http/HttpTransportListener.java
Modified: trunk/wsas/java/modules/core/src/org/wso2/wsas/ServerManagement.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/ServerManagement.java
(original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/ServerManagement.java
Thu Dec 6 00:42:55 2007
@@ -16,16 +16,22 @@
package org.wso2.wsas;
import org.apache.axis2.AxisFault;
-import org.apache.axis2.context.MessageContext;
import org.apache.axis2.description.TransportInDescription;
-import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.transport.TransportListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.management.Query;
+import javax.management.QueryExp;
+import java.lang.management.ManagementFactory;
import java.lang.reflect.Method;
import java.util.Iterator;
import java.util.Map;
+import java.util.Set;
/**
*
@@ -99,10 +105,33 @@
}
log.info("Stopped all transport listeners");
-// Thread.sleep(20000);
- //TODO: Make sure that all requests have been served
-// MBeanServer mBeanServer= new JmxMBeanServer();
-// mBeanServer.invoke();
+ /**
+ * Get all MBeans with names such as
Catalina:type=RequestProcessor,worker=http-9762,name=HttpRequest<n>
+ * &
Catalina:type=RequestProcessor,worker=http-9762,name=HttpsRequest<n>
+ */
+ MBeanServer mbs = ManagementFactory.getPlatformMBeanServer();
+ boolean areRequestsInService;
+ do {
+ QueryExp q = Query.eq(Query.attr("stage"),
+
Query.value(org.apache.coyote.Constants.STAGE_SERVICE));
+ Set set = mbs.queryNames(new
ObjectName("Catalina:type=RequestProcessor,*"), q);
+ if (set.size() > 0) {
+ areRequestsInService = true;
+ Thread.sleep(2000);
+ } else {
+ areRequestsInService = false;
+ }
+ /*for (Iterator iterator = set.iterator(); iterator.hasNext();) {
+ try {
+ ObjectName name = (ObjectName) iterator.next();
+ System.out.println("Got MBean: " + name);
+ Object o = mbs.getAttribute(name, "stage");
+ System.out.println("Stage=" + o);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }*/
+ } while (areRequestsInService);
return "Switched to maintenance mode";
}
@@ -113,7 +142,8 @@
* @return An appropriate message
* @throws org.apache.axis2.AxisFault
*/
- public String endMaintenance() throws Exception {
+ public String endMaintenance
+ () throws Exception {
log.info("Switching to normal mode...");
for (Iterator iter = inTransports.values().iterator();
iter.hasNext();) {
TransportInDescription tinDesc = (TransportInDescription)
iter.next();
@@ -124,7 +154,9 @@
return "Switched to normal mode";
}
- private void callTransportListeners(String methodName) throws AxisFault {
+ private void callTransportListeners
+ (String
+ methodName) throws AxisFault {
for (Iterator iter = inTransports.values().iterator();
iter.hasNext();) {
TransportInDescription tinDesc = (TransportInDescription)
iter.next();
TransportListener transport = tinDesc.getReceiver();
Modified:
trunk/wsas/java/modules/core/src/org/wso2/wsas/ServerManagementMBean.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/ServerManagementMBean.java
(original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/ServerManagementMBean.java
Thu Dec 6 00:42:55 2007
@@ -33,7 +33,7 @@
* </ol>
*
* @return An appropriate message
- * @throws Exception If an error occurred hile switching to maintenace
mode
+ * @throws Exception If an error occurred while switching to maintenace
mode
*/
String startMaintenance() throws Exception;
@@ -41,7 +41,7 @@
* Method to change the state of a node from "maintenance" to "normal"
*
* @return An appropriate message
- * @throws Exception If an error occurred hile switching to maintenace
mode
+ * @throws Exception If an error occurred while switching to normal mode
*/
String endMaintenance() throws Exception;
Modified:
trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/http/HttpTransportListener.java
==============================================================================
---
trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/http/HttpTransportListener.java
(original)
+++
trunk/wsas/java/modules/core/src/org/wso2/wsas/transport/http/HttpTransportListener.java
Thu Dec 6 00:42:55 2007
@@ -92,7 +92,7 @@
}
isStarted = false;
-// ((Http11Protocol)connector.getProtocolHandler()).setSoLinger();
+// ((Http11Protocol)connector.getProtocolHandler()).cHandler;
} catch (LifecycleException e) {
String msg = "Cannot stop Tomcat HTTP connector";
log.error(msg, e);
_______________________________________________
Wsas-java-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/wsas-java-dev