⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handlerrequest.java

📁 Tomcat 4.1与WebServer集成组件的源代码包.
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999 The Apache Software Foundation.  All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in *    the documentation and/or other materials provided with the *    distribution. * * 3. The end-user documentation included with the redistribution, if *    any, must include the following acknowlegement: *       "This product includes software developed by the *        Apache Software Foundation (http://www.apache.org/)." *    Alternately, this acknowlegement may appear in the software itself, *    if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software *    Foundation" must not be used to endorse or promote products derived *    from this software without prior written permission. For written *    permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache" *    nor may "Apache" appear in their names without prior written *    permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation.  For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * * [Additional notices, if required by prior licensing conditions] * */package org.apache.jk.common;import java.io.*;import java.net.*;import java.util.*;import org.apache.jk.core.*;import org.apache.tomcat.util.http.*;import org.apache.tomcat.util.buf.*;import org.apache.tomcat.util.net.SSLSupport;import org.apache.coyote.Request;import org.apache.coyote.*;/** * Handle messages related with basic request information. * * This object can handle the following incoming messages: * - "FORWARD_REQUEST" input message ( sent when a request is passed from the *   web server ) * - "RECEIVE_BODY_CHUNK" input ( sent by container to pass more body, in *   response to GET_BODY_CHUNK ) * * It can handle the following outgoing messages: * - SEND_HEADERS. Pass the status code and headers. * - SEND_BODY_CHUNK. Send a chunk of body * - GET_BODY_CHUNK. Request a chunk of body data * - END_RESPONSE. Notify the end of a request processing. * * @author Henri Gomez [hgomez@slib.fr] * @author Dan Milstein [danmil@shore.net] * @author Keith Wannamaker [Keith@Wannamaker.org] * @author Costin Manolache */public class HandlerRequest extends JkHandler{    private static org.apache.commons.logging.Log log=        org.apache.commons.logging.LogFactory.getLog( HandlerRequest.class );    // XXX Will move to a registry system.        // Prefix codes for message types from server to container    public static final byte JK_AJP13_FORWARD_REQUEST   = 2;    public static final byte JK_AJP13_SHUTDOWN   = 7;    // Prefix codes for message types from container to server    public static final byte JK_AJP13_SEND_BODY_CHUNK   = 3;    public static final byte JK_AJP13_SEND_HEADERS      = 4;    public static final byte JK_AJP13_END_RESPONSE      = 5;    public static final byte JK_AJP13_GET_BODY_CHUNK    = 6;        // Integer codes for common response header strings    public static final int SC_RESP_CONTENT_TYPE        = 0xA001;    public static final int SC_RESP_CONTENT_LANGUAGE    = 0xA002;    public static final int SC_RESP_CONTENT_LENGTH      = 0xA003;    public static final int SC_RESP_DATE                = 0xA004;    public static final int SC_RESP_LAST_MODIFIED       = 0xA005;    public static final int SC_RESP_LOCATION            = 0xA006;    public static final int SC_RESP_SET_COOKIE          = 0xA007;    public static final int SC_RESP_SET_COOKIE2         = 0xA008;    public static final int SC_RESP_SERVLET_ENGINE      = 0xA009;    public static final int SC_RESP_STATUS              = 0xA00A;    public static final int SC_RESP_WWW_AUTHENTICATE    = 0xA00B;	    // Integer codes for common (optional) request attribute names    public static final byte SC_A_CONTEXT       = 1;  // XXX Unused    public static final byte SC_A_SERVLET_PATH  = 2;  // XXX Unused    public static final byte SC_A_REMOTE_USER   = 3;    public static final byte SC_A_AUTH_TYPE     = 4;    public static final byte SC_A_QUERY_STRING  = 5;    public static final byte SC_A_JVM_ROUTE     = 6;    public static final byte SC_A_SSL_CERT      = 7;    public static final byte SC_A_SSL_CIPHER    = 8;    public static final byte SC_A_SSL_SESSION   = 9;    public static final byte SC_A_SSL_KEYSIZE   = 11;    public static final byte SC_A_SECRET        = 12;    // Used for attributes which are not in the list above    public static final byte SC_A_REQ_ATTRIBUTE = 10;     // Terminates list of attributes    public static final byte SC_A_ARE_DONE      = (byte)0xFF;        // Translates integer codes to names of HTTP methods    public static final String []methodTransArray = {        "OPTIONS",        "GET",        "HEAD",        "POST",        "PUT",        "DELETE",        "TRACE",        "PROPFIND",        "PROPPATCH",        "MKCOL",        "COPY",        "MOVE",        "LOCK",        "UNLOCK",        "ACL",        "REPORT",        "VERSION-CONTROL",        "CHECKIN",        "CHECKOUT",        "UNCHECKOUT",        "SEARCH",        "MKWORKSPACE",        "UPDATE",        "LABEL",        "MERGE",        "BASELINE-CONTROL",        "MKACTIVITY"    };        // id's for common request headers    public static final int SC_REQ_ACCEPT          = 1;    public static final int SC_REQ_ACCEPT_CHARSET  = 2;    public static final int SC_REQ_ACCEPT_ENCODING = 3;    public static final int SC_REQ_ACCEPT_LANGUAGE = 4;    public static final int SC_REQ_AUTHORIZATION   = 5;    public static final int SC_REQ_CONNECTION      = 6;    public static final int SC_REQ_CONTENT_TYPE    = 7;    public static final int SC_REQ_CONTENT_LENGTH  = 8;    public static final int SC_REQ_COOKIE          = 9;    public static final int SC_REQ_COOKIE2         = 10;    public static final int SC_REQ_HOST            = 11;    public static final int SC_REQ_PRAGMA          = 12;    public static final int SC_REQ_REFERER         = 13;    public static final int SC_REQ_USER_AGENT      = 14;    // AJP14 new header    public static final byte SC_A_SSL_KEY_SIZE  = 11; // XXX ???     // Translates integer codes to request header names        public static final String []headerTransArray = {        "accept",        "accept-charset",        "accept-encoding",        "accept-language",        "authorization",        "connection",        "content-type",        "content-length",        "cookie",        "cookie2",        "host",        "pragma",        "referer",        "user-agent"    };    HandlerDispatch dispatch;    String ajpidDir="conf";        public HandlerRequest()     {    }    public void init() {        dispatch=(HandlerDispatch)wEnv.getHandler( "dispatch" );        if( dispatch != null ) {            // register incoming message handlers            dispatch.registerMessageType( JK_AJP13_FORWARD_REQUEST,                                          "JK_AJP13_FORWARD_REQUEST",                                          this, null); // 2                        dispatch.registerMessageType( JK_AJP13_FORWARD_REQUEST,                                          "JK_AJP13_SHUTDOWN",                                          this, null); // 7                        // register outgoing messages handler            dispatch.registerMessageType( JK_AJP13_SEND_BODY_CHUNK, // 3                                          "JK_AJP13_SEND_BODY_CHUNK",                                          this,null );        }        bodyNote=wEnv.getNoteId( WorkerEnv.ENDPOINT_NOTE, "jkInputStream" );        tmpBufNote=wEnv.getNoteId( WorkerEnv.ENDPOINT_NOTE, "tmpBuf" );        secretNote=wEnv.getNoteId( WorkerEnv.ENDPOINT_NOTE, "secret" );        if( next==null )            next=wEnv.getHandler( "container" );        if( log.isDebugEnabled() )            log.debug( "Container handler " + next + " " + next.getName() +                       " " + next.getClass().getName());        // should happen on start()        generateAjp13Id();    }    public void setSecret( String s ) {        requiredSecret=s;    }    public void setUseSecret( boolean b ) {        requiredSecret=Double.toString(Math.random());    }    public void setDecodedUri( boolean b ) {	decoded=b;    }    public boolean isTomcatAuthentication() {        return tomcatAuthentication;    }    public void setTomcatAuthentication(boolean newTomcatAuthentication) {        tomcatAuthentication = newTomcatAuthentication;    }        public void setAjpidDir( String path ) {        if( "".equals( path ) ) path=null;        ajpidDir=path;    }        // -------------------- Ajp13.id --------------------    private void generateAjp13Id() {        int portInt=8009; // tcpCon.getPort();        InetAddress address=null; // tcpCon.getAddress();        if( requiredSecret == null )            return;                File f1=new File( wEnv.getJkHome() );        File f2=new File( f1, "conf" );                if( ! f2.exists() ) {            log.error( "No conf dir for ajp13.id " + f2 );            return;        }                File sf=new File( f2, "ajp13.id");                if( log.isDebugEnabled())            log.debug( "Using stop file: "+sf);        try {            Properties props=new Properties();            props.put( "port", Integer.toString( portInt ));            if( address!=null ) {                props.put( "address", address.getHostAddress() );            }            if( requiredSecret !=null ) {                props.put( "secret", requiredSecret );            }            FileOutputStream stopF=new FileOutputStream( sf );            props.save( stopF, "Automatically generated, don't edit" );        } catch( IOException ex ) {            log.debug( "Can't create stop file: "+sf );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -