Package winstone

Examples of winstone.WinstoneResponse


     */
    public void allocateRequestResponse(Socket socket, InputStream inSocket,
            OutputStream outSocket, RequestHandlerThread handler,
            boolean iAmFirst) throws SocketException, IOException {
        WinstoneRequest req = this.objectPool.getRequestFromPool();
        WinstoneResponse rsp = this.objectPool.getResponseFromPool();
        rsp.setRequest(req);
        req.setHostGroup(this.hostGroup);
        // rsp.updateContentTypeHeader("text/html");

        if (iAmFirst || (KEEP_ALIVE_TIMEOUT == -1))
            socket.setSoTimeout(CONNECTION_TIMEOUT);
        else
            socket.setSoTimeout(KEEP_ALIVE_TIMEOUT);
        Ajp13IncomingPacket headers = null;
        try {
            headers = new Ajp13IncomingPacket(inSocket, handler);
        } catch (InterruptedIOException err) {
            // keep alive timeout ? ignore if not first
            if (iAmFirst) {
                throw err;
            } else {
                deallocateRequestResponse(handler, req, rsp, null, null);
                return;
            }
        } finally {
            try {socket.setSoTimeout(CONNECTION_TIMEOUT);} catch (Throwable err) {}
        }

        if (headers.getPacketLength() > 0) {
            headers.parsePacket("8859_1");
            parseSocketInfo(headers, req);
            req.parseHeaders(Arrays.asList(headers.getHeaders()));
            String servletURI = parseURILine(headers, req, rsp);
            req.setAttribute(TEMPORARY_URL_STASH, servletURI);

            // If content-length present and non-zero, download the other
            // packets
            WinstoneInputStream inData = null;
            int contentLength = req.getContentLength();
            if (contentLength > 0) {
                byte bodyContent[] = new byte[contentLength];
                int position = 0;
                while (position < contentLength) {
                    outSocket.write(getBodyRequestPacket(Math.min(contentLength
                            - position, 8184)));
                    position = getBodyResponsePacket(inSocket, bodyContent,
                            position);
                    Logger.log(Logger.FULL_DEBUG, AJP_RESOURCES,
                            "Ajp13Listener.ReadBodyProgress", new String[] {
                                    "" + position, "" + contentLength });

                }
                inData = new WinstoneInputStream(bodyContent);
                inData.setContentLength(contentLength);
            } else
                inData = new WinstoneInputStream(new byte[0]);
            req.setInputStream(inData);

            // Build input/output streams, plus request/response
            WinstoneOutputStream outData = new Ajp13OutputStream(socket
                    .getOutputStream(), "8859_1");
            outData.setResponse(rsp);
            rsp.setOutputStream(outData);

            // Set the handler's member variables so it can execute the servlet
            handler.setRequest(req);
            handler.setResponse(rsp);
            handler.setInStream(inData);
View Full Code Here

TOP

Related Classes of winstone.WinstoneResponse

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.