You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by he...@apache.org on 2005/06/30 06:34:45 UTC

svn commit: r202479 - in /webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport: http/AxisServlet.java http/HTTPWorker.java mail/MailWorker.java tcp/TCPWorker.java

Author: hemapani
Date: Wed Jun 29 21:34:42 2005
New Revision: 202479

URL: http://svn.apache.org/viewcvs?rev=202479&view=rev
Log:
handling the errors thrown before AxisEngine is invoked 

Modified:
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPWorker.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/MailWorker.java
    webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/tcp/TCPWorker.java

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java?rev=202479&r1=202478&r2=202479&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/AxisServlet.java Wed Jun 29 21:34:42 2005
@@ -26,15 +26,14 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.xml.namespace.QName;
-import javax.xml.stream.FactoryConfigurationError;
 
 import org.apache.axis.Constants;
 import org.apache.axis.context.ConfigurationContext;
 import org.apache.axis.context.ConfigurationContextFactory;
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.context.SessionContext;
+import org.apache.axis.engine.AxisEngine;
 import org.apache.axis.engine.AxisFault;
-import org.apache.axis.om.OMException;
 
 /**
  * Class AxisServlet
@@ -80,6 +79,7 @@
         HttpServletResponse httpServletResponse)
         throws ServletException, IOException {
             httpServletResponse.setContentType("text/xml; charset=utf-8");
+            MessageContext msgContext  = null;
         try {
 
             Object sessionContext =
@@ -99,7 +99,7 @@
                 map.put(name, value);
             }
 
-            MessageContext msgContext =
+            msgContext =
                 new MessageContext(
                     configContext,
                     (SessionContext) sessionContext,
@@ -124,12 +124,12 @@
             if (!processed) {
                 lister.handle(httpServletRequest, httpServletResponse);
             }
-        } catch (OMException e) {
-            throw new AxisFault(e);
-        } catch (FactoryConfigurationError e) {
-            throw new AxisFault(e);
-        } catch (IOException e) {
-            throw new AxisFault(e);
+        } catch (Exception e) {
+            AxisEngine engine = new AxisEngine(configContext);
+            if(msgContext!= null){
+                msgContext.setProperty(MessageContext.TRANSPORT_OUT, httpServletResponse.getOutputStream());
+                engine.handleFault(msgContext,e);            
+            }
         }
 
     }
@@ -149,6 +149,7 @@
      */
     protected void doPost(HttpServletRequest req, HttpServletResponse res)
         throws ServletException, IOException {
+            MessageContext msgContext = null;
         try {
             System.out.println("came here");
             Object sessionContext =
@@ -157,7 +158,7 @@
                 sessionContext = new SessionContext(null);
                 req.getSession().setAttribute(Constants.SESSION_CONTEXT_PROPERTY, sessionContext);
             }
-            MessageContext msgContext =
+            msgContext =
                 new MessageContext(
                     configContext,
                     (SessionContext) sessionContext,
@@ -180,10 +181,11 @@
                 res.setStatus(HttpServletResponse.SC_ACCEPTED);
             }
         } catch (AxisFault e) {
-            throw new ServletException(e);
+            AxisEngine engine = new AxisEngine(configContext);
+            if(msgContext!= null){
+                msgContext.setProperty(MessageContext.TRANSPORT_OUT, res.getOutputStream());
+                engine.handleFault(msgContext,e);            
+            }
         }
     }
-
-  
-
 }

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPWorker.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPWorker.java?rev=202479&r1=202478&r2=202479&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPWorker.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/http/HTTPWorker.java Wed Jun 29 21:34:42 2005
@@ -28,6 +28,7 @@
 import org.apache.axis.context.ConfigurationContext;
 import org.apache.axis.context.MessageContext;
 import org.apache.axis.description.TransportOutDescription;
+import org.apache.axis.engine.AxisEngine;
 import org.apache.axis.engine.AxisFault;
 import org.apache.axis.util.threadpool.AxisWorker;
 import org.apache.commons.logging.Log;
@@ -38,12 +39,14 @@
     private ConfigurationContext configurationContext;
     private Socket socket;
 
-    public HTTPWorker(ConfigurationContext configurationContext,Socket socket){
+    public HTTPWorker(ConfigurationContext configurationContext, Socket socket) {
         this.configurationContext = configurationContext;
         this.socket = socket;
-    } 
+    }
 
     public void doWork() {
+        MessageContext msgContext = null;
+        SimpleHTTPOutputStream out = null;
         try {
             if (socket != null) {
                 if (configurationContext == null) {
@@ -55,7 +58,7 @@
                 TransportOutDescription transportOut =
                     configurationContext.getAxisConfiguration().getTransportOut(
                         new QName(Constants.TRANSPORT_HTTP));
-                MessageContext msgContext =
+                msgContext =
                     new MessageContext(
                         configurationContext,
                         configurationContext.getAxisConfiguration().getTransportIn(
@@ -68,7 +71,7 @@
                 Map map = reciver.parseTheHeaders(inStream, true);
 
                 //build a way to write the respone if the Axis choose to do so
-                SimpleHTTPOutputStream out;
+
                 String transferEncoding = (String) map.get(HTTPConstants.HEADER_TRANSFER_ENCODING);
                 if (transferEncoding != null
                     && HTTPConstants.HEADER_TRANSFER_ENCODING_CHUNKED.equals(transferEncoding)) {
@@ -80,8 +83,9 @@
                 msgContext.setProperty(MessageContext.TRANSPORT_OUT, out);
 
                 //This is way to provide Accsess to the transport information to the transport Sender
-                msgContext.setProperty(HTTPConstants.HTTPOutTransportInfo,new SimpleHTTPOutTransportInfo(out));
-                
+                msgContext.setProperty(
+                    HTTPConstants.HTTPOutTransportInfo,
+                    new SimpleHTTPOutTransportInfo(out));
 
                 if (HTTPConstants.HEADER_GET.equals(map.get(HTTPConstants.HTTP_REQ_TYPE))) {
                     //It is GET handle the Get request 
@@ -117,15 +121,26 @@
                 out.finalize();
             }
         } catch (Throwable e) {
-            log.error(e);
+            try {
+                AxisEngine engine = new AxisEngine(configurationContext);
+                if (msgContext != null) {
+                    if (out == null) {
+                        out = new SimpleHTTPOutputStream(socket.getOutputStream(), false);
+                    }
+                    msgContext.setProperty(MessageContext.TRANSPORT_OUT, out);
+                    engine.handleFault(msgContext, e);
+                }
+            } catch (Exception e1) {
+                log.error(e1);
+                e1.printStackTrace();
+            }
             e.printStackTrace();
         } finally {
             if (socket != null) {
-               try {
-                     this.socket.close();
+                try {
+                    this.socket.close();
                 } catch (IOException e1) {
-                    // TODO Auto-generated catch block
-                    e1.printStackTrace();
+                    log.error(e1);
                 }
             }
         }

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/MailWorker.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/MailWorker.java?rev=202479&r1=202478&r2=202479&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/MailWorker.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/mail/MailWorker.java Wed Jun 29 21:34:42 2005
@@ -118,15 +118,7 @@
             engine.receive(msgContext);
         } catch (Exception e) {
             e.printStackTrace();
-            AxisFault af;
-            if (e instanceof AxisFault) {
-                af = (AxisFault) e;
-                //log.debug(Messages.getMessage("serverFault00"), af);
-                // CT 07-Feb-2005
-                log.debug("Error occured while trying to process the mail.", af);
-            } else {
-                af = AxisFault.makeFault(e);
-            }
+            log.error(e);
         }
 
         /*

Modified: webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/tcp/TCPWorker.java
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/tcp/TCPWorker.java?rev=202479&r1=202478&r2=202479&view=diff
==============================================================================
--- webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/tcp/TCPWorker.java (original)
+++ webservices/axis/trunk/java/modules/core/src/org/apache/axis/transport/tcp/TCPWorker.java Wed Jun 29 21:34:42 2005
@@ -45,18 +45,19 @@
     private ConfigurationContext configurationContext;
     private Socket socket;
 
-    public TCPWorker(ConfigurationContext configurationContext,Socket socket){
+    public TCPWorker(ConfigurationContext configurationContext, Socket socket) {
         this.configurationContext = configurationContext;
         this.socket = socket;
-    } 
+    }
 
     public void doWork() {
+        MessageContext msgContext = null;
         try {
             Reader in = new InputStreamReader(socket.getInputStream());
             TransportOutDescription transportOut =
                 configurationContext.getAxisConfiguration().getTransportOut(
                     new QName(Constants.TRANSPORT_TCP));
-            MessageContext msgContext =
+            msgContext =
                 new MessageContext(
                     configurationContext,
                     configurationContext.getAxisConfiguration().getTransportIn(
@@ -68,8 +69,7 @@
 
             AxisEngine engine = new AxisEngine(configurationContext);
             try {
-                XMLStreamReader xmlreader =
-                    XMLInputFactory.newInstance().createXMLStreamReader(in);
+                XMLStreamReader xmlreader = XMLInputFactory.newInstance().createXMLStreamReader(in);
                 StAXBuilder builder = new StAXSOAPModelBuilder(xmlreader);
                 msgContext.setEnvelope((SOAPEnvelope) builder.getDocumentElement());
             } catch (Exception e) {
@@ -78,12 +78,21 @@
             engine.receive(msgContext);
 
         } catch (Throwable e) {
-            log.error(e);
-            e.printStackTrace();
+            try {
+                AxisEngine engine = new AxisEngine(configurationContext);
+                if (msgContext != null) {
+                    msgContext.setProperty(MessageContext.TRANSPORT_OUT, socket.getOutputStream());
+                    engine.handleFault(msgContext, e);
+                }
+            } catch (Exception e1) {
+                log.error(e);
+                e.printStackTrace();
+            }
+
         } finally {
             if (socket != null) {
-               try {
-                     this.socket.close();
+                try {
+                    this.socket.close();
                 } catch (IOException e1) {
                     // TODO Auto-generated catch block
                     e1.printStackTrace();