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 di...@apache.org on 2007/04/10 01:41:02 UTC

svn commit: r526955 [4/7] - in /webservices/axis2/trunk/java: ./ modules/adb-codegen/ modules/adb/ modules/addressing/ modules/clustering/ modules/codegen/ modules/fastinfoset/ modules/integration/ modules/java2wsdl/ modules/jaxbri/ modules/jaxws-api/ ...

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java?view=diff&rev=526955&r1=526954&r2=526955
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/AxisHttpService.java Mon Apr  9 16:40:57 2007
@@ -27,93 +27,216 @@
 */
 package org.apache.axis2.transport.http.server;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.SocketException;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.addressing.AddressingHelper;
+import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ContextFactory;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.TransportInDescription;
 import org.apache.axis2.description.TransportOutDescription;
 import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.transport.RequestResponseTransport;
 import org.apache.axis2.transport.http.HTTPConstants;
 import org.apache.axis2.util.MessageContextBuilder;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.http.ConnectionReuseStrategy;
 import org.apache.http.Header;
+import org.apache.http.HttpEntityEnclosingRequest;
 import org.apache.http.HttpException;
 import org.apache.http.HttpInetConnection;
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpResponseFactory;
-import org.apache.http.HttpServerConnection;
+import org.apache.http.HttpStatus;
 import org.apache.http.HttpVersion;
-import org.apache.http.RequestLine;
+import org.apache.http.MethodNotSupportedException;
+import org.apache.http.ProtocolException;
 import org.apache.http.UnsupportedHttpVersionException;
-import org.apache.http.entity.StringEntity;
-import org.apache.http.message.BasicStatusLine;
+import org.apache.http.params.HttpParams;
 import org.apache.http.protocol.HttpContext;
 import org.apache.http.protocol.HttpProcessor;
-import org.apache.http.protocol.HttpService;
 
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.SocketException;
-import java.util.HashMap;
-import java.util.Iterator;
+import edu.emory.mathcs.backport.java.util.concurrent.CountDownLatch;
 
 /**
  * This class is an extension of the defaulf HTTP service responsible for
  * maintaining and polulating the {@link MessageContext} for incoming Axis
  * requests.
  */
-public class AxisHttpService extends HttpService {
+public class AxisHttpService {
 
     private static final Log LOG = LogFactory.getLog(AxisHttpService.class);
 
+    private final HttpProcessor httpProcessor;
+    private final ConnectionReuseStrategy connStrategy;
+    private final HttpResponseFactory responseFactory;
     private final MessageContext msgContext;
     private final ConfigurationContext configurationContext;
-    private final SessionManager sessionManager;
     private final Worker worker;
 
+    private HttpParams params;
+
     public AxisHttpService(
             final HttpProcessor httpProcessor,
             final ConnectionReuseStrategy connStrategy,
             final HttpResponseFactory responseFactory,
             final ConfigurationContext configurationContext,
-            final SessionManager sessionManager,
             final Worker worker) {
-        super(httpProcessor, connStrategy, responseFactory);
+        super();
+        if (httpProcessor == null) {
+            throw new IllegalArgumentException("HTTP processor may not be null");
+        }
+        if (connStrategy == null) {
+            throw new IllegalArgumentException("Connection strategy may not be null");
+        }
+        if (responseFactory == null) {
+            throw new IllegalArgumentException("Response factory may not be null");
+        }
         if (worker == null) {
             throw new IllegalArgumentException("Worker may not be null");
         }
         if (configurationContext == null) {
             throw new IllegalArgumentException("Configuration context may not be null");
         }
-        if (sessionManager == null) {
-            throw new IllegalArgumentException("Session manager may not be null");
-        }
+        this.httpProcessor = httpProcessor;
+        this.connStrategy = connStrategy;
+        this.responseFactory = responseFactory;
         this.configurationContext = configurationContext;
-        this.sessionManager = sessionManager;
         this.worker = worker;
 
         this.msgContext = ContextFactory.createMessageContext(configurationContext);
         this.msgContext.setIncomingTransportName(Constants.TRANSPORT_HTTP);
     }
 
+    public HttpParams getParams() {
+        return this.params;
+    }
+    
+    public void setParams(final HttpParams params) {
+        this.params = params;
+    }
+    
+    public void handleRequest(final AxisHttpConnection conn, final HttpContext context) 
+            throws IOException, HttpException { 
+        
+        if (conn instanceof HttpInetConnection) {
+            HttpInetConnection inetconn = (HttpInetConnection) conn;
+            this.msgContext.setProperty(MessageContext.REMOTE_ADDR, 
+                    inetconn.getRemoteAddress().getHostAddress());
+            this.msgContext.setProperty(MessageContext.TRANSPORT_ADDR,
+                    inetconn.getLocalAddress().getHostAddress());
+
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Remote address of the connection : " + 
+                        inetconn.getRemoteAddress().getHostAddress());
+            }
+        }
+        
+        HttpResponse response;
+        try {
+            HttpRequest request = conn.receiveRequest(this.params);
+            HttpVersion ver = request.getRequestLine().getHttpVersion();
+            if (!ver.lessEquals(HttpVersion.HTTP_1_1)) {
+                // Downgrade protocol version if greater than HTTP/1.1 
+                ver = HttpVersion.HTTP_1_1;
+            }
+
+            response = this.responseFactory.newHttpResponse
+                (ver, HttpStatus.SC_OK, context);
+            response.getParams().setDefaults(this.params);
+            
+            if (request instanceof HttpEntityEnclosingRequest) {
+                if (((HttpEntityEnclosingRequest) request).expectContinue()) {
+                    HttpResponse ack = this.responseFactory.newHttpResponse
+                        (ver, HttpStatus.SC_CONTINUE, context);
+                    ack.getParams().setDefaults(this.params);
+                    conn.sendResponse(ack);
+                    conn.flush();
+                }
+            }
+            
+            // Create Axis request and response objects
+            AxisHttpRequestImpl axisreq = new AxisHttpRequestImpl(
+                    conn, 
+                    request, 
+                    this.httpProcessor, 
+                    context); 
+            AxisHttpResponseImpl axisres = new AxisHttpResponseImpl(
+                    conn, 
+                    response, 
+                    this.httpProcessor, 
+                    context); 
+
+            // Prepare HTTP request
+            axisreq.prepare();
+            
+            // Run the service
+            doService(axisreq, axisres, context);
+            
+            // Make sure the request content is fully consumed
+            InputStream instream = conn.getInputStream();
+            if (instream != null) {
+                instream.close();
+            }
+
+            // Commit response if not committed
+            if (!axisres.isCommitted()) {
+                axisres.commit();
+            }
+
+            // Make sure the response content is properly terminated
+            OutputStream outstream = conn.getOutputStream();
+            if (outstream != null) {
+                outstream.close();
+            }
+            
+        } catch (HttpException ex) {
+            response = this.responseFactory.newHttpResponse
+                (HttpVersion.HTTP_1_0, HttpStatus.SC_INTERNAL_SERVER_ERROR,
+                 context);
+            response.getParams().setDefaults(this.params);
+            handleException(ex, response);
+            this.httpProcessor.process(response, context);
+            conn.sendResponse(response);
+        }
+        
+        conn.flush();
+        if (!this.connStrategy.keepAlive(response, context)) {
+            conn.close();
+        } else {
+            conn.reset();
+        }
+    }    
+    
+    protected void handleException(final HttpException ex, final HttpResponse response) {
+        if (ex instanceof MethodNotSupportedException) {
+            response.setStatusCode(HttpStatus.SC_NOT_IMPLEMENTED);
+        } else if (ex instanceof UnsupportedHttpVersionException) {
+            response.setStatusCode(HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED);
+        } else if (ex instanceof ProtocolException) {
+            response.setStatusCode(HttpStatus.SC_BAD_REQUEST);
+        } else {
+            response.setStatusCode(HttpStatus.SC_INTERNAL_SERVER_ERROR);
+        }
+    }
+       
     protected void doService(
-            final HttpRequest request,
-            final HttpResponse response,
+            final AxisHttpRequest request, 
+            final AxisHttpResponse response,
             final HttpContext context) throws HttpException, IOException {
-        RequestLine reqline = request.getRequestLine();
         if (LOG.isDebugEnabled()) {
-            LOG.debug("Request method: " + reqline.getMethod());
-            LOG.debug("Target URI: " + reqline.getUri());
-        }
-
-        HttpVersion ver = reqline.getHttpVersion();
-        if (!ver.lessEquals(HttpVersion.HTTP_1_1)) {
-            throw new UnsupportedHttpVersionException("Unsupported HTTP version: " + ver);
+            LOG.debug("Request method: " + request.getMethod());
+            LOG.debug("Target URI: " + request.getRequestURI());
         }
 
         try {
@@ -127,7 +250,8 @@
             this.msgContext.setTransportOut(transportOut);
             this.msgContext.setServerSide(true);
             this.msgContext.setProperty(HTTPConstants.COOKIE_STRING, sessionKey);
-            this.msgContext.setProperty(Constants.Configuration.TRANSPORT_IN_URL, reqline.getUri());
+            this.msgContext.setProperty(Constants.Configuration.TRANSPORT_IN_URL, 
+                    request.getRequestURI());
 
             // set the transport Headers
             HashMap headerMap = new HashMap();
@@ -135,7 +259,19 @@
                 Header header = (Header) it.next();
                 headerMap.put(header.getName(), header.getValue());
             }
-            this.msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, headerMap);
+            this.msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, 
+                    headerMap);
+            this.msgContext.setProperty(Constants.Configuration.CONTENT_TYPE, 
+                    request.getContentType());
+            
+            this.msgContext.setProperty(MessageContext.TRANSPORT_OUT, 
+                    response.getOutputStream());
+            this.msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, 
+                    response);
+            this.msgContext.setTo(new EndpointReference(request.getRequestURI()));
+            this.msgContext.setProperty(RequestResponseTransport.TRANSPORT_CONTROL,
+                                 new SimpleHTTPRequestResponseTransport());
+            
             this.worker.service(request, response, this.msgContext);
         } catch (SocketException ex) {
             // Socket is unreliable. 
@@ -144,59 +280,60 @@
             // HTTP protocol violation. Transport is unrelaible
             throw ex;
         } catch (Throwable e) {
-            try {
-                AxisEngine engine = new AxisEngine(this.configurationContext);
 
-                OutputBuffer outbuffer = new OutputBuffer();
-                this.msgContext
-                        .setProperty(MessageContext.TRANSPORT_OUT, outbuffer.getOutputStream());
-                this.msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, outbuffer);
-
-                MessageContext faultContext =
-                        MessageContextBuilder.createFaultMessageContext(msgContext, e);
-                // If the fault is not going along the back channel we should be 202ing
-                if (AddressingHelper.isFaultRedirected(this.msgContext)) {
-                    response.setStatusLine(new BasicStatusLine(ver, 202, "Accepted"));
-                } else {
-                    response.setStatusLine(new BasicStatusLine(ver, 500, "Internal server error"));
-                }
-                engine.sendFault(faultContext);
-                response.setEntity(outbuffer);
-            } catch (Exception ex) {
-                if (AddressingHelper.isFaultRedirected(this.msgContext)) {
-                    response.setStatusLine(new BasicStatusLine(ver, 202, "Accepted"));
-                } else {
-                    // TODO: Why isn't this a SOAP fault?
-                    response.setStatusLine(new BasicStatusLine(ver, 500, "Internal server error"));
-                    String msg = ex.getMessage();
-                    StringEntity entity;
-                    if (msg != null && msg.trim().length() != 0) {
-                        entity = new StringEntity(msg);
-                    } else {
-                        entity = new StringEntity("Exception message unknown");
-                    }
-                    entity.setContentType("text/plain");
-                    response.setEntity(entity);
-                }
+            AxisEngine engine = new AxisEngine(this.configurationContext);
+
+            this.msgContext.setProperty(MessageContext.TRANSPORT_OUT, 
+                    response.getOutputStream());
+            this.msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, 
+                    response);
+
+            MessageContext faultContext =
+                    MessageContextBuilder.createFaultMessageContext(msgContext, e);
+            // If the fault is not going along the back channel we should be 202ing
+            if (AddressingHelper.isFaultRedirected(this.msgContext)) {
+                response.setStatus(HttpStatus.SC_ACCEPTED);
+            } else {
+                response.sendError(HttpStatus.SC_INTERNAL_SERVER_ERROR, "Internal server error");
             }
+            engine.sendFault(faultContext);
         }
 
     }
 
-    public void handleRequest(final HttpServerConnection conn, final HttpContext context)
-            throws IOException, HttpException {
-        if (conn instanceof HttpInetConnection) {
-            HttpInetConnection inetconn = (HttpInetConnection) conn;
-            InetAddress address = inetconn.getRemoteAddress();
-            this.msgContext.setProperty(MessageContext.REMOTE_ADDR, address.getHostAddress());
+    class SimpleHTTPRequestResponseTransport implements RequestResponseTransport {
 
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Remote address of the connection : " + address);
-            }
+        private CountDownLatch responseReadySignal = new CountDownLatch(1);
+        RequestResponseTransportStatus status = RequestResponseTransportStatus.INITIAL;
+        AxisFault faultToBeThrownOut = null;
+
+        public void acknowledgeMessage(MessageContext msgContext) throws AxisFault {
+            //TODO: Once the core HTTP API allows us to return an ack before unwinding, then the should be fixed
+            signalResponseReady();
+        }
+
+        public void awaitResponse() throws InterruptedException, AxisFault {
+            status = RequestResponseTransportStatus.WAITING;
+            responseReadySignal.await();
+
+            if (faultToBeThrownOut != null)
+                throw faultToBeThrownOut;
         }
-        this.msgContext.setProperty(MessageContext.TRANSPORT_ADDR,
-                ((DefaultHttpConnectionFactory.Axis2HttpServerConnection)conn).getLocalIPAddress());
-        super.handleRequest(conn, context);
-    }
 
+        public void signalResponseReady() {
+            status = RequestResponseTransportStatus.SIGNALLED;
+            responseReadySignal.countDown();
+        }
+
+        public RequestResponseTransportStatus getStatus() {
+            return status;
+        }
+
+        public void signalFaultReady(AxisFault fault) {
+            faultToBeThrownOut = fault;
+            signalResponseReady();
+        }
+
+    }
+    
 }

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultConnectionListener.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultConnectionListener.java?view=diff&rev=526955&r1=526954&r2=526955
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultConnectionListener.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultConnectionListener.java Mon Apr  9 16:40:57 2007
@@ -31,7 +31,7 @@
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.http.HttpServerConnection;
+import org.apache.http.params.HttpParams;
 
 import java.io.IOException;
 import java.net.ServerSocket;
@@ -44,40 +44,34 @@
     private volatile boolean destroyed = false;
 
     private final int port;
-    private final HttpConnectionFactory connfactory;
     private final HttpConnectionManager connmanager;
-    private ServerSocket serversocket = null;
     private final ConnectionListenerFailureHandler failureHandler;
+    private final HttpParams params;
 
-    /**
-     * Default constructor called by HttpFactory.  A custom HttpFactory subclass can call the other constructor to provide a custom ConnectionListenerErrorHandler
-     */
-    public DefaultConnectionListener(int port, HttpConnectionFactory connfactory,
-                                     HttpConnectionManager connmanager) throws IOException {
-        this(port, connfactory, connmanager, new DefaultConnectionListenerFailureHandler());
-    }
+    private ServerSocket serversocket = null;
 
     /**
      * Use this constructor to provide a custom ConnectionListenerFailureHandler, e.g. by subclassing DefaultConnectionListenerFailureHandler
      */
-    public DefaultConnectionListener(int port, HttpConnectionFactory connfactory,
-                                     HttpConnectionManager connmanager,
-                                     ConnectionListenerFailureHandler failureHandler)
-            throws IOException {
+    public DefaultConnectionListener(
+            int port,
+            final HttpConnectionManager connmanager,
+            final ConnectionListenerFailureHandler failureHandler,
+            final HttpParams params) throws IOException {
         super();
-        if (connfactory == null) {
-            throw new IllegalArgumentException("Connection factory may not be null");
-        }
         if (connmanager == null) {
             throw new IllegalArgumentException("Connection manager may not be null");
         }
         if (failureHandler == null) {
             throw new IllegalArgumentException("Failure handler may not be null");
         }
+        if (params == null) {
+            throw new IllegalArgumentException("HTTP parameters may not be null");
+        }
         this.port = port;
         this.connmanager = connmanager;
-        this.connfactory = connfactory;
         this.failureHandler = failureHandler;
+        this.params = params;
     }
 
     public void run() {
@@ -97,7 +91,7 @@
                         LOG.debug("Incoming HTTP connection from " +
                                 socket.getRemoteSocketAddress());
                     }
-                    HttpServerConnection conn = this.connfactory.newConnection(socket);
+                    AxisHttpConnection conn = new AxisHttpConnectionImpl(socket, this.params);
                     this.connmanager.process(conn);
                 } catch (Throwable ex) {
                     if (Thread.interrupted()) {

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionManager.java?view=diff&rev=526955&r1=526954&r2=526955
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionManager.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpConnectionManager.java Mon Apr  9 16:40:57 2007
@@ -35,7 +35,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.http.ConnectionReuseStrategy;
 import org.apache.http.HttpResponseFactory;
-import org.apache.http.HttpServerConnection;
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
 import org.apache.http.impl.DefaultHttpResponseFactory;
 import org.apache.http.params.HttpParams;
@@ -59,7 +58,6 @@
     private final WorkerFactory workerfactory;
     private final HttpParams params;
     private final List processors;
-    private final SessionManager sessionManager;
 
     private HttpFactory httpFactory = null;
 
@@ -82,7 +80,6 @@
             throw new IllegalArgumentException("HTTP parameters may not be null");
         }
         this.configurationContext = configurationContext;
-        this.sessionManager = new SessionManager();
         this.executor = executor;
         this.workerfactory = workerfactory;
         this.params = params;
@@ -123,7 +120,7 @@
         this.processors.remove(processor);
     }
 
-    public void process(final HttpServerConnection conn) {
+    public void process(final AxisHttpConnection conn) {
         if (conn == null) {
             throw new IllegalArgumentException("HTTP connection may not be null");
         }
@@ -147,7 +144,7 @@
             p.addInterceptor(new ResponseContent());
             p.addInterceptor(new ResponseConnControl());
             p.addInterceptor(new ResponseSessionCookie());
-            httpProcessor = new LoggingProcessorDecorator(p);
+            httpProcessor = p;
             connStrategy = new DefaultConnectionReuseStrategy();
             responseFactory = new DefaultHttpResponseFactory();
         }
@@ -157,7 +154,6 @@
                 connStrategy,
                 responseFactory,
                 this.configurationContext,
-                this.sessionManager,
                 this.workerfactory.newWorker());
         httpService.setParams(this.params);
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpConnectionManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpConnectionManager.java?view=diff&rev=526955&r1=526954&r2=526955
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpConnectionManager.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpConnectionManager.java Mon Apr  9 16:40:57 2007
@@ -29,11 +29,9 @@
 
 package org.apache.axis2.transport.http.server;
 
-import org.apache.http.HttpServerConnection;
-
 public interface HttpConnectionManager {
 
-    void process(HttpServerConnection incoming);
+    void process(AxisHttpConnection incoming);
 
     void shutdown();
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpFactory.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpFactory.java?view=diff&rev=526955&r1=526954&r2=526955
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpFactory.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpFactory.java Mon Apr  9 16:40:57 2007
@@ -29,11 +29,8 @@
 
 package org.apache.axis2.transport.http.server;
 
-import edu.emory.mathcs.backport.java.util.concurrent.BlockingQueue;
-import edu.emory.mathcs.backport.java.util.concurrent.ExecutorService;
-import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
-import edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
-import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
+import java.io.IOException;
+
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.ConfigurationContext;
@@ -44,8 +41,8 @@
 import org.apache.http.ConnectionReuseStrategy;
 import org.apache.http.HttpResponseFactory;
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
-import org.apache.http.impl.DefaultHttpParams;
 import org.apache.http.impl.DefaultHttpResponseFactory;
+import org.apache.http.params.BasicHttpParams;
 import org.apache.http.params.HttpConnectionParams;
 import org.apache.http.params.HttpParams;
 import org.apache.http.params.HttpProtocolParams;
@@ -56,7 +53,11 @@
 import org.apache.http.protocol.ResponseDate;
 import org.apache.http.protocol.ResponseServer;
 
-import java.io.IOException;
+import edu.emory.mathcs.backport.java.util.concurrent.BlockingQueue;
+import edu.emory.mathcs.backport.java.util.concurrent.ExecutorService;
+import edu.emory.mathcs.backport.java.util.concurrent.LinkedBlockingQueue;
+import edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor;
+import edu.emory.mathcs.backport.java.util.concurrent.TimeUnit;
 
 /**
  * Factory used to configure and create the various instances required in http transports.
@@ -244,24 +245,22 @@
     /**
      * Create the listener for request connections
      */
-    public IOProcessor newRequestConnectionListener(HttpConnectionFactory factory,
-                                                    HttpConnectionManager manager, int port)
-            throws IOException {
-        return new DefaultConnectionListener(port, factory, manager);
-    }
-
-    /**
-     * Create a request connection
-     */
-    public HttpConnectionFactory newRequestConnectionFactory(HttpParams params) {
-        return new DefaultHttpConnectionFactory(params);
+    public IOProcessor newRequestConnectionListener(
+            int port,
+            final HttpConnectionManager manager, 
+            final HttpParams params) throws IOException {
+        return new DefaultConnectionListener(
+                port, 
+                manager, 
+                new DefaultConnectionListenerFailureHandler(), 
+                params);
     }
 
     /**
      * Create and set the parameters applied to incoming request connections
      */
     public HttpParams newRequestConnectionParams() {
-        HttpParams params = new DefaultHttpParams();
+        HttpParams params = new BasicHttpParams();
         params
                 .setIntParameter(HttpConnectionParams.SO_TIMEOUT, requestSocketTimeout)
                 .setBooleanParameter(HttpConnectionParams.TCP_NODELAY, requestTcpNoDelay)
@@ -320,7 +319,7 @@
         httpProcessor.addInterceptor(new ResponseContent());
         httpProcessor.addInterceptor(new ResponseConnControl());
         httpProcessor.addInterceptor(new ResponseSessionCookie());
-        return new LoggingProcessorDecorator(httpProcessor);
+        return httpProcessor;
     }
 
     public ConnectionReuseStrategy newConnStrategy() {

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpServiceProcessor.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpServiceProcessor.java?view=diff&rev=526955&r1=526954&r2=526955
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpServiceProcessor.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpServiceProcessor.java Mon Apr  9 16:40:57 2007
@@ -33,10 +33,8 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.http.ConnectionClosedException;
 import org.apache.http.HttpException;
-import org.apache.http.HttpServerConnection;
 import org.apache.http.protocol.HttpContext;
 import org.apache.http.protocol.HttpExecutionContext;
-import org.apache.http.protocol.HttpService;
 
 import java.io.IOException;
 import java.net.SocketException;
@@ -53,13 +51,13 @@
 
     private volatile boolean terminated;
 
-    private final HttpService httpservice;
-    private final HttpServerConnection conn;
+    private final AxisHttpService httpservice;
+    private final AxisHttpConnection conn;
     private final IOProcessorCallback callback;
 
     public HttpServiceProcessor(
-            final HttpService httpservice,
-            final HttpServerConnection conn,
+            final AxisHttpService httpservice,
+            final AxisHttpConnection conn,
             final IOProcessorCallback callback) {
         super();
         this.httpservice = httpservice;

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpUtils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpUtils.java?view=diff&rev=526955&r1=526954&r2=526955
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpUtils.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/HttpUtils.java Mon Apr  9 16:40:57 2007
@@ -29,7 +29,6 @@
 
 import org.apache.axis2.transport.http.HTTPConstants;
 import org.apache.http.Header;
-import org.apache.http.HttpRequest;
 
 import java.net.InetAddress;
 import java.net.NetworkInterface;
@@ -41,7 +40,7 @@
     private HttpUtils() {
     }
 
-    public static String getSoapAction(final HttpRequest request) {
+    public static String getSoapAction(final AxisHttpRequest request) {
         if (request == null) {
             return null;
         }

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/SimpleHttpServer.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/SimpleHttpServer.java?view=diff&rev=526955&r1=526954&r2=526955
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/SimpleHttpServer.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/SimpleHttpServer.java Mon Apr  9 16:40:57 2007
@@ -27,7 +27,6 @@
 *
 */
 
-
 package org.apache.axis2.transport.http.server;
 
 import edu.emory.mathcs.backport.java.util.concurrent.ExecutorService;
@@ -56,7 +55,6 @@
     private IOProcessor listener = null;
     private ExecutorService listenerExecutor = null;
     private HttpConnectionManager connmanager = null;
-    private HttpConnectionFactory connfactory = null;
     private ExecutorService requestExecutor = null;
 
     public SimpleHttpServer(ConfigurationContext configurationContext, WorkerFactory workerFactory,
@@ -77,8 +75,7 @@
         connmanager =
                 httpFactory.newRequestConnectionManager(requestExecutor, workerFactory, params);
         listenerExecutor = httpFactory.newListenerExecutor(port);
-        connfactory = httpFactory.newRequestConnectionFactory(params);
-        listener = httpFactory.newRequestConnectionListener(connfactory, connmanager, port);
+        listener = httpFactory.newRequestConnectionListener(port, connmanager, params);
     }
 
     public void destroy() throws IOException, InterruptedException {

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/Worker.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/Worker.java?view=diff&rev=526955&r1=526954&r2=526955
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/Worker.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/Worker.java Mon Apr  9 16:40:57 2007
@@ -29,14 +29,12 @@
 
 import org.apache.axis2.context.MessageContext;
 import org.apache.http.HttpException;
-import org.apache.http.HttpRequest;
-import org.apache.http.HttpResponse;
 
 import java.io.IOException;
 
 public interface Worker {
 
-    void service(HttpRequest request, HttpResponse response, MessageContext msgContext)
+    void service(AxisHttpRequest request, AxisHttpResponse response, MessageContext msgContext)
             throws HttpException, IOException;
 
 }

Modified: webservices/axis2/trunk/java/modules/metadata/pom.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/pom.xml?view=diff&rev=526955&r1=526954&r2=526955
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/pom.xml (original)
+++ webservices/axis2/trunk/java/modules/metadata/pom.xml Mon Apr  9 16:40:57 2007
@@ -15,9 +15,7 @@
 	! See the License for the specific language governing permissions and
 	! limitations under the License.
 	!-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
 		<groupId>org.apache.axis2</groupId>
@@ -25,15 +23,9 @@
 		<version>SNAPSHOT</version>
 		<relativePath>../parent/pom.xml</relativePath>
 	</parent>
-
 	<artifactId>axis2-metadata</artifactId>
 	<name>Apache Axis 2.0 - Metadata</name>
 	<description>JSR-181 and JSR-224 Annotations Processing</description>
-  <scm>
-    <connection>scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/metadata</connection>
-    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/metadata</developerConnection>
-    <url>http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata</url>
-  </scm>
 	<dependencies>
 		<dependency>
 			<groupId>org.apache.axis2</groupId>
@@ -41,148 +33,137 @@
 			<version>${version}</version>
 		</dependency>
 		<dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-jaxws-api</artifactId>
+			<groupId>org.apache.axis2</groupId>
+			<artifactId>axis2-jaxws-api</artifactId>
 			<version>${version}</version>
-        </dependency>
+		</dependency>
 		<dependency>
-            <groupId>org.apache.axis2</groupId>
-            <artifactId>axis2-saaj</artifactId>
+			<groupId>org.apache.axis2</groupId>
+			<artifactId>axis2-saaj</artifactId>
 			<version>${version}</version>
-			<scope>test</scope>
-        </dependency>
-		 <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>jaxb-impl</artifactId>
-            <version>2.0.2</version>
-            <exclusions>
-            	<exclusion>
-            		<artifactId>jsr173</artifactId>
-            		<groupId>javax.xml</groupId>
-            	</exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.sun.xml.bind</groupId>
-            <artifactId>jaxb-xjc</artifactId>
-            <version>2.0.2</version>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>1.2.13</version>
-        </dependency>
-
-        <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
-            <version>2.0</version>
-            <exclusions>
-            	<exclusion>
-            		<artifactId>jsr173</artifactId>
-            		<groupId>javax.xml</groupId>
-            	</exclusion>
-            </exclusions>
-        </dependency>
+		</dependency>
+		<dependency>
+			<groupId>com.sun.xml.bind</groupId>
+			<artifactId>jaxb-impl</artifactId>
+			<exclusions>
+				<exclusion>
+					<artifactId>jsr173</artifactId>
+					<groupId>javax.xml</groupId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>com.sun.xml.bind</groupId>
+			<artifactId>jaxb-xjc</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>log4j</groupId>
+			<artifactId>log4j</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>javax.xml.bind</groupId>
+			<artifactId>jaxb-api</artifactId>
+			<exclusions>
+				<exclusion>
+					<artifactId>jsr173</artifactId>
+					<groupId>javax.xml</groupId>
+				</exclusion>
+			</exclusions>
+		</dependency>
 	</dependencies>
-
-    <build>
-        <sourceDirectory>src</sourceDirectory>
-        <testSourceDirectory>test</testSourceDirectory>
-        <resources>
-        <resource>
-        <directory>src</directory>
-        <excludes><exclude>*.java</exclude></excludes>
-        </resource>
-        </resources>
-        <plugins>
-	      <plugin>
-	        <artifactId>maven-compiler-plugin</artifactId>
-	        <inherited>true</inherited>
-	        <configuration>
-	          <source>1.5</source>
-	          <target>1.5</target>
-	        </configuration>
-	      </plugin>
-        <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-antrun-plugin</artifactId>
-        <version>1.1</version>
-        <executions>
-        <execution>
-            <id>gen-ts</id>
-            <phase>generate-test-sources</phase>
-            <configuration>
-              <tasks>
-        <!-- Theres got to be a better way to do this -->
-        <property name="schema.source.dir" value="test-resources/xsd"/>
-    	<property name="wsdl.source.dir" value="test-resources/wsdl"/>
-        <property name="schema.output.base.dir" value="target/schema"/>
-        <property name="schema.generated.src.dir" value="${schema.output.base.dir}/src"/>
-        <property name="schema.generated.classes.dir" value="${schema.output.base.dir}/classes"/>
-        
-    	<!-- make the dirs -->
-        <mkdir dir="${schema.output.base.dir}"/>
-        <mkdir dir="${schema.generated.src.dir}"/>
-        <mkdir dir="${schema.generated.classes.dir}"/>
-
-    	<!-- Run JAXB schema compiler with designated schemas -->
-        <echo>Generating JAX-B classes from XSDs</echo>    
-
-    	<echo>Generating java from ProxyDocLitWrapped.wsdl</echo>
-    	<java classname="com.sun.tools.xjc.Driver" fork="true"> 
-    	    <classpath refid="maven.runtime.classpath"/>
-    	    <classpath location="${compiled.classes.dir}"/>
-    	    <arg line="-d ${schema.generated.src.dir} -quiet -p org.test.proxy.doclitwrapped -quiet -wsdl ${wsdl.source.dir}/ProxyDocLitWrapped.wsdl"/>
-    	</java>
-			  </tasks>
-            </configuration>
-            <goals>
-              <goal>run</goal>
-            </goals>
-          </execution>
-        </executions>
-        <dependencies>
-          <dependency>
-            <groupId>org.apache.ant</groupId>
-            <artifactId>ant-antlr</artifactId>
-            <version>1.7.0</version>
-          </dependency>
-          <dependency>
-            <groupId>antlr</groupId>
-            <artifactId>antlrall</artifactId>
-            <version>2.7.4</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>add-test-source</id>
-            <phase>process-test-resources</phase>
-            <goals>
-              <goal>add-test-source</goal>
-            </goals>
-            <configuration>
-              <sources>
-                <source>${basedir}/target/schema/src</source>
-              </sources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-  		<artifactId>maven-surefire-plugin</artifactId>
-  		<inherited>true</inherited>
-  		<configuration>
-  			<skip>false</skip>
-  			<includes>
-           	 <include>**/*Tests.java</include>
-            </includes>
-  		</configuration>
-  	  </plugin>
-       </plugins>
-    </build>
+	<build>
+		<sourceDirectory>src</sourceDirectory>
+		<testSourceDirectory>test</testSourceDirectory>
+		<resources>
+			<resource>
+				<directory>src</directory>
+				<excludes>
+					<exclude>*.java</exclude>
+				</excludes>
+			</resource>
+		</resources>
+		<plugins>
+			<plugin>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<inherited>true</inherited>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-antrun-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>gen-ts</id>
+						<phase>generate-test-sources</phase>
+						<configuration>
+							<tasks>
+								<!-- Theres got to be a better way to do this -->
+								<property name="schema.source.dir" value="test-resources/xsd"/>
+								<property name="wsdl.source.dir" value="test-resources/wsdl"/>
+								<property name="schema.output.base.dir" value="target/schema"/>
+								<property name="schema.generated.src.dir" value="${schema.output.base.dir}/src"/>
+								<property name="schema.generated.classes.dir" value="${schema.output.base.dir}/classes"/>
+								<!-- make the dirs -->
+								<mkdir dir="${schema.output.base.dir}"/>
+								<mkdir dir="${schema.generated.src.dir}"/>
+								<mkdir dir="${schema.generated.classes.dir}"/>
+								<!-- Run JAXB schema compiler with designated schemas -->
+								<echo>Generating JAX-B classes from XSDs</echo>
+								<echo>Generating java from ProxyDocLitWrapped.wsdl</echo>
+								<java classname="com.sun.tools.xjc.Driver" fork="true">
+									<classpath refid="maven.runtime.classpath"/>
+									<classpath location="${compiled.classes.dir}"/>
+									<arg line="-d ${schema.generated.src.dir} -quiet -p org.test.proxy.doclitwrapped -quiet -wsdl ${wsdl.source.dir}/ProxyDocLitWrapped.wsdl"/>
+								</java>
+							</tasks>
+						</configuration>
+						<goals>
+							<goal>run</goal>
+						</goals>
+					</execution>
+				</executions>
+				<dependencies>
+					<!--<dependency>
+						<groupId>org.apache.ant</groupId>
+						<artifactId>ant-antlr</artifactId>
+					</dependency>
+					<dependency>
+						<groupId>antlr</groupId>
+						<artifactId>antlrall</artifactId>
+					</dependency>-->
+				</dependencies>
+			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>build-helper-maven-plugin</artifactId>
+				<executions>
+					<execution>
+						<id>add-test-source</id>
+						<phase>process-test-resources</phase>
+						<goals>
+							<goal>add-test-source</goal>
+						</goals>
+						<configuration>
+							<sources>
+								<source>${basedir}/target/schema/src</source>
+							</sources>
+						</configuration>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<inherited>true</inherited>
+				<configuration>
+					<skip>false</skip>
+					<includes>
+						<include>**/*Tests.java</include>
+					</includes>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>

Modified: webservices/axis2/trunk/java/modules/mtompolicy/pom.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/mtompolicy/pom.xml?view=diff&rev=526955&r1=526954&r2=526955
==============================================================================
--- webservices/axis2/trunk/java/modules/mtompolicy/pom.xml (original)
+++ webservices/axis2/trunk/java/modules/mtompolicy/pom.xml Mon Apr  9 16:40:57 2007
@@ -15,9 +15,7 @@
 	! See the License for the specific language governing permissions and
 	! limitations under the License.
 	!-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 	<modelVersion>4.0.0</modelVersion>
 	<parent>
 		<groupId>org.apache.axis2</groupId>
@@ -25,15 +23,9 @@
 		<version>SNAPSHOT</version>
 		<relativePath>../parent/pom.xml</relativePath>
 	</parent>
-
 	<artifactId>axis2-mtompolicy</artifactId>
 	<name>Apache Axis 2.0 - MTOM Policy</name>
 	<description>Axis2 : MTOM Policy</description>
-  <scm>
-    <connection>scm:svn:http://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/mtompolicy</connection>
-    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/webservices/axis2/trunk/java/modules/mtompolicy</developerConnection>
-    <url>http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/mtompolicy</url>
-  </scm>
 	<dependencies>
 		<dependency>
 			<groupId>org.apache.axis2</groupId>
@@ -41,37 +33,34 @@
 			<version>${version}</version>
 		</dependency>
 		<dependency>
-            <groupId>org.apache.neethi</groupId>
-            <artifactId>neethi</artifactId>
-            <version>SNAPSHOT</version>
-        </dependency>
+			<groupId>org.apache.neethi</groupId>
+			<artifactId>neethi</artifactId>
+		</dependency>
 	</dependencies>
-
 	<build>
 		<sourceDirectory>src</sourceDirectory>
-	    <resources>
-	      <resource>
-	        <directory>src</directory>
-	        <excludes>
-	          <exclude>**/*.java</exclude>
-	        </excludes>
-	      </resource>
-	    </resources>
+		<resources>
+			<resource>
+				<directory>src</directory>
+				<excludes>
+					<exclude>**/*.java</exclude>
+				</excludes>
+			</resource>
+		</resources>
 		<testSourceDirectory>test</testSourceDirectory>
 		<testResources>
 			<testResource>
 				<directory>test-resources</directory>
 			</testResource>
 		</testResources>
-		    
 		<plugins>
-	  	  <plugin>
-	  		<artifactId>maven-surefire-plugin</artifactId>
-	  		<inherited>true</inherited>
-	  		<configuration>
-	  			<skip>false</skip>
-	  		</configuration>
-	  	  </plugin>
-	    </plugins>
+			<plugin>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<inherited>true</inherited>
+				<configuration>
+					<skip>false</skip>
+				</configuration>
+			</plugin>
+		</plugins>
 	</build>
 </project>



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org