Package org.apache.tomcat.lite.http

Examples of org.apache.tomcat.lite.http.HttpChannel


    static Tomcat main = TomcatStandaloneMain.setUp(port);

    public void testSimple() throws IOException {
        HttpConnector clientCon = HttpClient.newClient();

        HttpChannel ch = clientCon.get("localhost", port);
        ch.getRequest().setRequestURI("/index.html");
        ch.getRequest().send();

        BBuffer res = ch.readAll(null, 0);

        assertTrue(res.toString(),
                res.toString().indexOf("<title>Apache Tomcat</title>") >= 0);
    }
View Full Code Here


            int port = 443;
            if (hostPort.length > 1) {
                port = Integer.parseInt(hostPort[1]);
            }
            if (log.isLoggable(Level.FINE)) {
                HttpChannel server = serverHttpReq.getHttpChannel();
                log.info("NEW: " + server.getId() + " " + dstHost + " "  +
                        server.getRequest().getMethod() +
                        " " + server.getRequest().getRequestURI() + " " +
                        server.getIn());
            }

            try {
                getSelector().connect(host, port,
                        new ProxyConnectClientConnection(serverHttpReq.getHttpChannel()));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return;
        }


        CBuffer origURIx = serverHttpReq.requestURI();
//        String origURI = origURIx.toString();
//        if (origURI.startsWith("http://")) {
//            // Real proxy - extract client address, modify the uri.
//            // TODO: optimize the strings.
//            int start = origURI.indexOf('/', 7);
//            String hostPortS = (start == -1) ?
//                    origURI.subSequence(7, origURI.length()).toString() :
//                    origURI.subSequence(7, start).toString();
//            String[] hostPort = hostPortS.split(":");
//
//            dstHost = hostPort[0];
//            dstPort = (hostPort.length > 1) ? Integer.parseInt(hostPort[1]) :
//                80;
//
//            if (start >= 0) {
//                serverHttpReq.requestURI().set(origURI.substring(start));
//            } else {
//                serverHttpReq.requestURI().set("/");
//            }
//        } else {
            // Adjust the host header.
            CBuffer hostHdr =
                serverHttpReq.getMimeHeaders().getHeader("host");
            if (hostHdr != null) {
                hostHdr.recycle();
                CBuffer cb = hostHdr;
                cb.append(dstHost);
                if (dstPort != 80) {
                    cb.append(':');
                    cb.appendInt(dstPort);
                }
            }
//        }
        if (debug) {
            HttpChannel server = serverHttpReq.getHttpChannel();
            log.info("START: " + server.getId() + " " + dstHost + " "  +
                    server.getRequest().getMethod() +
                    " " + server.getRequest().getRequestURI() + " " +
                    server.getIn());
        }

        // Send the request with a non-blocking write
        HttpChannel serverHttp = serverHttpReq.getHttpChannel();

        // Client connection
        HttpChannel httpClient = getHttpConnector().get(dstHost, dstPort);

        serverHttp.getRequest().setAttribute("CLIENT", httpClient);
        httpClient.getRequest().setAttribute("SERVER", serverHttp);
        serverHttp.getRequest().setAttribute("P", httpClient);
        httpClient.getRequest().setAttribute("P", serverHttp);

        httpClient.setHttpService(clientHeadersReceived);

        // Will send the original request (TODO: small changes)
        // Response is not affected ( we use the callback )
        httpClient.getRequest().method().set(serverHttp.getRequest().method());
        httpClient.getRequest().requestURI().set(serverHttp.getRequest().requestURI());
        if (serverHttp.getRequest().queryString().length() != 0) {
            httpClient.getRequest().queryString().set(serverHttp.getRequest().queryString());
        }

        httpClient.getRequest().protocol().set(serverHttp.getRequest().protocol());

        //cstate.reqHeaders.addValue(name)
        copyHeaders(serverHttp.getRequest().getMimeHeaders(),
                httpClient.getRequest().getMimeHeaders() /*dest*/);

        // For debug
        httpClient.getRequest().getMimeHeaders().remove("Accept-Encoding");

        if (!keepOpen) {
            httpClient.getRequest().getMimeHeaders().setValue("Connection").set("Close");
        }

        // Any data
        serverHttp.setDataReceivedCallback(copy);
        copy.handleReceived(serverHttp);

        httpClient.send();


        //serverHttp.handleReceived(serverHttp.getSink());
        //httpClient.flush(); // send any data still there

        httpClient.setCompletedCallback(done);
        // Will call release()
        serverHttp.setCompletedCallback(done);

        serverHttpReq.async();
    }
View Full Code Here

         * Headers received from the client (content http server).
         * TODO: deal with version missmatches.
         */
        @Override
        public void service(HttpRequest clientHttpReq, HttpResponse clientHttpRes) throws IOException {
            HttpChannel serverHttp = (HttpChannel) clientHttpReq.getAttribute("SERVER");

            try {
                serverHttp.getResponse().setStatus(clientHttpRes.getStatus());
                serverHttp.getResponse().getMessageBuffer().set(clientHttpRes.getMessageBuffer());
                copyHeaders(clientHttpRes.getMimeHeaders(),
                        serverHttp.getResponse().getMimeHeaders());

                serverHttp.getResponse().getMimeHeaders().addValue("TomcatProxy").set("True");

                clientHttpReq.getHttpChannel().setDataReceivedCallback(copy);
                copy.handleReceived(clientHttpReq.getHttpChannel());

                serverHttp.startSending();


                //clientHttpReq.flush(); // send any data still there

                //  if (clientHttpReq.getHttpChannel().getIn().isClosedAndEmpty()) {
View Full Code Here

        public HttpDoneCallback() {
        }

        @Override
        public void handle(HttpChannel doneCh, Object extraData) throws IOException {
            HttpChannel serverCh =
                (HttpChannel) doneCh.getRequest().getAttribute("SERVER");
            HttpChannel clientCh = doneCh;
            String tgt = "C";
            if (serverCh == null) {
                 serverCh = doneCh;
                 clientCh =
                    (HttpChannel) doneCh.getRequest().getAttribute("CLIENT");
                 tgt = "S";
            }
            if (serverCh == null || clientCh == null) {
                return;
            }
            if (doneCh.getError()) {
                serverCh.abort("Proxy error");
                clientCh.abort("Proxy error");
                return;
            }

            if (log.isLoggable(Level.FINE)) {
                HttpChannel peerCh =
                    (HttpChannel) doneCh.getRequest().getAttribute("SERVER");
                if (peerCh == null) {
                    peerCh =
                        (HttpChannel) doneCh.getRequest().getAttribute("CLIENT");
                } else {

                }
                log.info(tgt + " " + peerCh.getId() + " " +
                        doneCh.getTarget() + " " +
                        doneCh.getRequest().getMethod() +
                        " " + doneCh.getRequest().getRequestURI() + " " +
                        doneCh.getResponse().getStatus() + " IN:" + doneCh.getIn()
                        + " OUT:" + doneCh.getOut() +
                        " SIN:" + peerCh.getIn() +
                        " SOUT:" + peerCh.getOut() );
            }
            // stop forwarding. After this call the client object will be
            // recycled
            //clientCB.outBuffer = null;
View Full Code Here

    public EchoCallback() {
    }

    @Override
    public void service(HttpRequest req, HttpResponse res) throws IOException {
        HttpChannel sproc = req.getHttpChannel();
        res.setStatus(200);
        res.setContentType(contentType);

        IOBuffer tmp = new IOBuffer(null);
        Http11Connection.serialize(req, tmp);

        sproc.getOut().append("REQ HEAD:\n");
        sproc.getOut().append(tmp.readAll(null));
        IOBuffer reqBuf = sproc.getOut();

        reqBuf.append("\nCONTENT_LENGTH:")
            .append(Long.toString(req.getContentLength()))
            .append("\n");
//
View Full Code Here

TOP

Related Classes of org.apache.tomcat.lite.http.HttpChannel

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.