Author: azeez
Date: Mon Jan 10 16:28:28 2011
New Revision: 1057261

URL: http://svn.apache.org/viewvc?rev=1057261&view=rev
Log:
Fix for AXIS2-4500. Suggested by Bhushan Khardekar. 

Also did some code alignment since the 1 tab = 4 spaces rule was violated


Modified:
    
axis/axis2/java/core/trunk/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorConstants.java
    
axis/axis2/java/core/trunk/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java
    axis/axis2/java/core/trunk/modules/webapp/conf/web.xml

Modified: 
axis/axis2/java/core/trunk/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorConstants.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorConstants.java?rev=1057261&r1=1057260&r2=1057261&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorConstants.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorConstants.java
 Mon Jan 10 16:28:28 2011
@@ -25,19 +25,24 @@ package org.apache.axis2.soapmonitor.ser
 
 public class SOAPMonitorConstants {
 
-  /**
-   * SOAP message types
-   */
-  public static final int SOAP_MONITOR_REQUEST  = 0;
-  public static final int SOAP_MONITOR_RESPONSE = 1;
+    /**
+     * SOAP message types
+     */
+    public static final int SOAP_MONITOR_REQUEST = 0;
+    public static final int SOAP_MONITOR_RESPONSE = 1;
 
-  /** 
-   * Servlet initialization parameter names
-   */
-  public static final String SOAP_MONITOR_PORT = "SOAPMonitorPort";
+    /**
+     * Port Servlet initialization parameter
+     */
+    public static final String SOAP_MONITOR_PORT = "SOAPMonitorPort";
 
-  /**
-   * Unique SOAP monitor id tag
-   */
-  public static final String SOAP_MONITOR_ID = "SOAPMonitorId";
+    /**
+     * Host name Servlet initialization parameter
+     */
+    public static final String SOAP_MONITOR_HOST_NAME = "SOAPMonitorHostName";
+
+    /**
+     * Unique SOAP monitor id tag
+     */
+    public static final String SOAP_MONITOR_ID = "SOAPMonitorId";
 }

Modified: 
axis/axis2/java/core/trunk/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java?rev=1057261&r1=1057260&r2=1057261&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/soapmonitor/servlet/src/main/java/org/apache/axis2/soapmonitor/servlet/SOAPMonitorService.java
 Mon Jan 10 16:28:28 2011
@@ -30,276 +30,291 @@ import javax.servlet.http.HttpServletRes
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
+import java.net.InetAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.util.Enumeration;
 import java.util.Vector;
 
 /**
- * This is a SOAP Monitor Service class. 
- *
- * During the HTTP server startup, the servlet init method 
- * is invoked.  This allows the code to open a server 
- * socket that will be used to communicate with running 
+ * This is a SOAP Monitor Service class.
+ * <p/>
+ * During the HTTP server startup, the servlet init method
+ * is invoked.  This allows the code to open a server
+ * socket that will be used to communicate with running
  * applets.
- *
- * When an HTTP GET request is received, the servlet 
- * dynamically produces an HTML document to load the SOAP 
+ * <p/>
+ * When an HTTP GET request is received, the servlet
+ * dynamically produces an HTML document to load the SOAP
  * monitor applet and supply the port number being used by
- * the server socket (so the applet will know how to 
+ * the server socket (so the applet will know how to
  * connect back to the server).
- *
- * Each time a socket connection is established, a new 
- * thread is created to handle communications from the 
+ * <p/>
+ * Each time a socket connection is established, a new
+ * thread is created to handle communications from the
  * applet.
- *
+ * <p/>
  * The publishMethod routine is invoked by the SOAP monitor
- * handler when a SOAP message request or response is 
- * detected.  The information about the SOAP message is 
- * then forwared to all current socket connections for 
+ * handler when a SOAP message request or response is
+ * detected.  The information about the SOAP message is
+ * then forwared to all current socket connections for
  * display by the applet.
  */
 
 public class SOAPMonitorService extends HttpServlet {
 
-  /**
-   * Private data 
-   */
-  private static ServerSocket server_socket = null;
-  private static Vector       connections = null;
-
-  private static final Log log = LogFactory.getLog(SOAPMonitorService.class);
-
-  /**
-   * Constructor
-   */
-  public SOAPMonitorService() {
-  }
-
-
-  /**
-   * Publish a SOAP message to listeners
-   */
-  public static void publishMessage(Long id, 
-                                    Integer type, 
-                                    String target,
-                                    String soap) {
-    if (connections != null) {
-      Enumeration e = connections.elements();
-      while (e.hasMoreElements()) {
-        ConnectionThread ct = (ConnectionThread) e.nextElement();
-        ct.publishMessage(id,type,target,soap);
-      }
-    }
-  }
+    /**
+     * Private data
+     */
+    private static ServerSocket serverSocket = null;
+    private static Vector connections = null;
 
-  /**
-   * Servlet initialiation
-   */
-  public void init() throws ServletException {
-    if (connections == null) {
-      // Create vector to hold connection information
-      connections = new Vector();
-    }
-    if (server_socket == null) {
-      // Get the server socket port from the init params
-      ServletConfig config = super.getServletConfig();
-      String port = 
config.getInitParameter(SOAPMonitorConstants.SOAP_MONITOR_PORT);
-      if (port == null) {
-        log.error("SOAPMonitorService can't find ServletConfig init parameter 
'port'");
-        port = "0";
-      }
-      try {
-        // Try to open the server socket
-        server_socket = new ServerSocket(Integer.parseInt(port));
-      } catch (Exception ex) {
-        // Let someone know we could not open the socket
-        log.error("Unable to open server socket using port: " + port);
-        log.error(ex.getMessage(), ex);
-        // Fail as loudly as possible for those without logging configured
-        config.getServletContext().log("Unable to open server socket using 
port "+port+":", ex);
-        server_socket = null;
-      }
-      if (server_socket != null) {
-        // Start the server socket thread
-        new Thread(new ServerSocketThread()).start();
-      }
-    }
-  }
+    private static final Log log = LogFactory.getLog(SOAPMonitorService.class);
 
-  /**
-   * Servlet termination
-   */
-  public void destroy() {
-    // End all connection threads
-    Enumeration e = connections.elements();
-    while (e.hasMoreElements()) {
-      ConnectionThread ct = (ConnectionThread) e.nextElement();
-      ct.close();
-    }
-    // End main server socket thread
-    if (server_socket != null) {
-      try {
-        server_socket.close();
-      } catch (Exception x) {}
-      server_socket = null;
+    /**
+     * Constructor
+     */
+    public SOAPMonitorService() {
     }
-  }
 
-  /**
-   * HTTP GET request
-   */
-  public void doGet(HttpServletRequest request, HttpServletResponse response)
-              throws IOException, ServletException
-  {
-   // Create HTML to load the SOAP monitor applet
-   int port = 0;
-   if (server_socket != null) {
-     port = server_socket.getLocalPort();
-     log.debug("Sending param to SOAP monitor applet as port: " + port);
-   }
-   response.setContentType("text/html");
-   response.getWriter().println("<html>");
-   response.getWriter().println("<head>");
-   response.getWriter().println("<title>SOAP Monitor</title>");
-   response.getWriter().println("</head>");
-   response.getWriter().println("<body>");
-   response.getWriter().println("<object 
classid=\"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93\" width=100% height=100% 
codebase=\"http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0\";>");
-   response.getWriter().println("<param name=code 
value=org.apache.axis2.soapmonitor.applet.SOAPMonitorApplet.class>");
-   response.getWriter().println("<param name=\"type\" 
value=\"application/x-java-applet;version=1.3\">");
-   response.getWriter().println("<param name=\"scriptable\" value=\"false\">");
-   response.getWriter().println("<param name=\"port\" value=\""+port+"\">");
-   response.getWriter().println("<comment>");
-   response.getWriter().println("<embed 
type=\"application/x-java-applet;version=1.3\" 
code=org.apache.axis2.soapmonitor.applet.SOAPMonitorApplet.class width=100% 
height=100% port=\""+port+"\" scriptable=false 
pluginspage=\"http://java.sun.com/products/plugin/1.3/plugin-install.html\";>"); 
-   response.getWriter().println("<noembed>"); 
-   response.getWriter().println("</comment>"); 
-   response.getWriter().println("</noembed>"); 
-   response.getWriter().println("</embed>"); 
-   response.getWriter().println("</object>");
-   response.getWriter().println("</body>");
-   response.getWriter().println("</html>");
-  }
-
-  /**
-   * Thread class for handling the server socket
-   */
-  class ServerSocketThread implements Runnable {
 
     /**
-     * Thread for handling the server socket
+     * Publish a SOAP message to listeners
      */
-    public void run() {
-      // Wait for socket connections
-      while (server_socket != null) {
-        try {
-          Socket socket = server_socket.accept();
-          new Thread(new ConnectionThread(socket)).start();
-        } catch (IOException ioe) {}
-      }
+    public static void publishMessage(Long id,
+                                      Integer type,
+                                      String target,
+                                      String soap) {
+        if (connections != null) {
+            Enumeration e = connections.elements();
+            while (e.hasMoreElements()) {
+                ConnectionThread ct = (ConnectionThread) e.nextElement();
+                ct.publishMessage(id, type, target, soap);
+            }
+        }
     }
-  }
 
-  /**
-   * Thread class for handling socket connections
-   */
-  class ConnectionThread implements Runnable {
-
-    private Socket             socket = null;
-    private ObjectInputStream  in = null;
-    private ObjectOutputStream out = null;
-    private boolean            closed = false;
+    /**
+     * Servlet initialiation
+     */
+    public void init() throws ServletException {
+        if (connections == null) {
+            // Create vector to hold connection information
+            connections = new Vector();
+        }
+        if (serverSocket == null) {
+            // Get the server socket port from the init params
+            ServletConfig config = super.getServletConfig();
+            String hostName = 
config.getInitParameter(SOAPMonitorConstants.SOAP_MONITOR_HOST_NAME);
+            String port = 
config.getInitParameter(SOAPMonitorConstants.SOAP_MONITOR_PORT);
+            if (port == null) {
+                log.error("SOAPMonitorService can't find ServletConfig init 
parameter 'port'");
+                port = "0";
+            }
+            try {
+                if (hostName != null) {
+                    serverSocket = new ServerSocket(Integer.parseInt(port),
+                                                    50,
+                                                    
InetAddress.getByName(hostName));
+                } else {
+                    serverSocket = new ServerSocket(Integer.parseInt(port));
+                }
+            } catch (Exception ex) {
+                // Let someone know we could not open the socket
+                log.error("Unable to open server socket using port: " + port);
+                log.error(ex.getMessage(), ex);
+                // Fail as loudly as possible for those without logging 
configured
+                config.getServletContext().
+                        log("Unable to open server socket using port " + port 
+ ":", ex);
+                serverSocket = null;
+            }
+            if (serverSocket != null) {
+                // Start the server socket thread
+                new Thread(new ServerSocketThread()).start();
+            }
+        }
+    }
 
     /**
-     * Constructor
+     * Servlet termination
      */
-    public ConnectionThread(Socket s) {
-      socket = s;
-      try {
-        // Use object streams for input and output
-        //
-        // NOTE: We need to be sure to create and flush the 
-        // output stream first because the ObjectOutputStream
-        // constructor writes a header to the stream that is
-        // needed by the ObjectInputStream on the other end
-        out = new ObjectOutputStream(socket.getOutputStream());
-        out.flush();
-        in = new ObjectInputStream(socket.getInputStream());
-      } catch (Exception e) {}
-      // Add the connection to our list
-      synchronized (connections) {
-        connections.addElement(this);
-      }
+    public void destroy() {
+        // End all connection threads
+        Enumeration e = connections.elements();
+        while (e.hasMoreElements()) {
+            ConnectionThread ct = (ConnectionThread) e.nextElement();
+            ct.close();
+        }
+        // End main server socket thread
+        if (serverSocket != null) {
+            try {
+                serverSocket.close();
+            } catch (Exception x) {
+            }
+            serverSocket = null;
+        }
     }
 
     /**
-     * Close the socket connection
+     * HTTP GET request
      */
-    public void close() {
-      closed = true;
-      try {
-        socket.close();
-      } catch (IOException ioe) {}
+    public void doGet(HttpServletRequest request, HttpServletResponse response)
+            throws IOException, ServletException {
+        // Create HTML to load the SOAP monitor applet
+        int port = 0;
+        if (serverSocket != null) {
+            port = serverSocket.getLocalPort();
+            log.debug("Sending param to SOAP monitor applet as port: " + port);
+        }
+        response.setContentType("text/html");
+        response.getWriter().println("<html>");
+        response.getWriter().println("<head>");
+        response.getWriter().println("<title>SOAP Monitor</title>");
+        response.getWriter().println("</head>");
+        response.getWriter().println("<body>");
+        response.getWriter().println("<object 
classid=\"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93\" width=100% height=100% 
codebase=\"http://java.sun.com/products/plugin/1.3/jinstall-13-win32.cab#Version=1,3,0,0\";>");
+        response.getWriter().println("<param name=code 
value=org.apache.axis2.soapmonitor.applet.SOAPMonitorApplet.class>");
+        response.getWriter().println("<param name=\"type\" 
value=\"application/x-java-applet;version=1.3\">");
+        response.getWriter().println("<param name=\"scriptable\" 
value=\"false\">");
+        response.getWriter().println("<param name=\"port\" value=\"" + port + 
"\">");
+        response.getWriter().println("<comment>");
+        response.getWriter().println("<embed 
type=\"application/x-java-applet;version=1.3\" 
code=org.apache.axis2.soapmonitor.applet.SOAPMonitorApplet.class width=100% 
height=100% port=\"" + port + "\" scriptable=false 
pluginspage=\"http://java.sun.com/products/plugin/1.3/plugin-install.html\";>");
+        response.getWriter().println("<noembed>");
+        response.getWriter().println("</comment>");
+        response.getWriter().println("</noembed>");
+        response.getWriter().println("</embed>");
+        response.getWriter().println("</object>");
+        response.getWriter().println("</body>");
+        response.getWriter().println("</html>");
     }
 
     /**
-     * Thread to handle the socket connection
+     * Thread class for handling the server socket
      */
-    public void run() {
-      try {
-        while (!closed) {
-          Object o = in.readObject();
-        }
-      } catch (Exception e) {}
-      // Cleanup connection list
-      synchronized (connections) {
-        connections.removeElement(this);
-      }
-      // Cleanup I/O streams 
-      if (out != null) {
-        try {
-          out.close();
-        } catch (IOException ioe) {}
-        out = null;
-      }
-      if (in != null) {
-        try {
-          in.close();
-        } catch (IOException ioe) {}
-        in = null;
-      }
-      // Be sure the socket is closed
-      close();
+    class ServerSocketThread implements Runnable {
+
+        /**
+         * Thread for handling the server socket
+         */
+        public void run() {
+            // Wait for socket connections
+            while (serverSocket != null) {
+                try {
+                    Socket socket = serverSocket.accept();
+                    new Thread(new ConnectionThread(socket)).start();
+                } catch (IOException ioe) {
+                }
+            }
+        }
     }
 
     /**
-     * Publish SOAP message information
+     * Thread class for handling socket connections
      */
-    public synchronized void publishMessage(Long id, 
-                               Integer message_type, 
-                               String target, 
-                               String soap) {
-      // If we have a valid output stream, then
-      // send the data to the applet
-      if (out != null) {
-        try {
-          switch (message_type.intValue()) {
-            case SOAPMonitorConstants.SOAP_MONITOR_REQUEST:
-              out.writeObject(message_type);
-              out.writeObject(id);
-              out.writeObject(target);
-              out.writeObject(soap);
-              out.flush();
-              break;
-            case SOAPMonitorConstants.SOAP_MONITOR_RESPONSE:
-              out.writeObject(message_type);
-              out.writeObject(id);
-              out.writeObject(soap);
-              out.flush();
-              break;
-          }
-        } catch (Exception e) {}
-      }
+    class ConnectionThread implements Runnable {
+
+        private Socket socket = null;
+        private ObjectInputStream in = null;
+        private ObjectOutputStream out = null;
+        private boolean closed = false;
+
+        /**
+         * Constructor
+         */
+        public ConnectionThread(Socket s) {
+            socket = s;
+            try {
+                // Use object streams for input and output
+                //
+                // NOTE: We need to be sure to create and flush the
+                // output stream first because the ObjectOutputStream
+                // constructor writes a header to the stream that is
+                // needed by the ObjectInputStream on the other end
+                out = new ObjectOutputStream(socket.getOutputStream());
+                out.flush();
+                in = new ObjectInputStream(socket.getInputStream());
+            } catch (Exception e) {
+            }
+            // Add the connection to our list
+            synchronized (connections) {
+                connections.addElement(this);
+            }
+        }
+
+        /**
+         * Close the socket connection
+         */
+        public void close() {
+            closed = true;
+            try {
+                socket.close();
+            } catch (IOException ioe) {
+            }
+        }
+
+        /**
+         * Thread to handle the socket connection
+         */
+        public void run() {
+            try {
+                while (!closed) {
+                    Object o = in.readObject();
+                }
+            } catch (Exception e) {
+            }
+            // Cleanup connection list
+            synchronized (connections) {
+                connections.removeElement(this);
+            }
+            // Cleanup I/O streams
+            if (out != null) {
+                try {
+                    out.close();
+                } catch (IOException ioe) {
+                }
+                out = null;
+            }
+            if (in != null) {
+                try {
+                    in.close();
+                } catch (IOException ioe) {
+                }
+                in = null;
+            }
+            // Be sure the socket is closed
+            close();
+        }
+
+        /**
+         * Publish SOAP message information
+         */
+        public synchronized void publishMessage(Long id,
+                                                Integer message_type,
+                                                String target,
+                                                String soap) {
+            // If we have a valid output stream, then
+            // send the data to the applet
+            if (out != null) {
+                try {
+                    switch (message_type.intValue()) {
+                        case SOAPMonitorConstants.SOAP_MONITOR_REQUEST:
+                            out.writeObject(message_type);
+                            out.writeObject(id);
+                            out.writeObject(target);
+                            out.writeObject(soap);
+                            out.flush();
+                            break;
+                        case SOAPMonitorConstants.SOAP_MONITOR_RESPONSE:
+                            out.writeObject(message_type);
+                            out.writeObject(id);
+                            out.writeObject(soap);
+                            out.flush();
+                            break;
+                    }
+                } catch (Exception e) {
+                }
+            }
+        }
     }
-  }
 }
 

Modified: axis/axis2/java/core/trunk/modules/webapp/conf/web.xml
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/webapp/conf/web.xml?rev=1057261&r1=1057260&r2=1057261&view=diff
==============================================================================
--- axis/axis2/java/core/trunk/modules/webapp/conf/web.xml (original)
+++ axis/axis2/java/core/trunk/modules/webapp/conf/web.xml Mon Jan 10 16:28:28 
2011
@@ -54,6 +54,10 @@
             <param-name>SOAPMonitorPort</param-name>
             <param-value>5001</param-value>
         </init-param>
+        <init-param>
+            <param-name>SOAPMonitorHostName</param-name>
+            <param-value>localhost</param-value>
+        </init-param>
         <load-on-startup>1</load-on-startup>
     </servlet -->
     


Reply via email to