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

Reply via email to