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

📄 basejkconfig.java

📁 业界著名的tomcat服务器的最新6.0的源代码。
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    /** 
     * Get the host associated with this Container (if any).
     */
    protected Host getHost(Container child) {
        while(child != null && ! (child instanceof Host) ) {
            child = child.getParent();
        }
        return (Host)child;
    }

    //-------------------- Properties --------------------

    /** 
     *  Append to config file.
     *  Set to <code>true</code> if the config information should be 
     *  appended.
     */
    public void setAppend(boolean apnd) {
        append = apnd;
    }

    /** 
     *  If false, we'll try to generate a config that will
     *  let apache serve static files.
     *  The default is true, forward all requests in a context
     *  to tomcat.
     */
    public void setForwardAll( boolean b ) {
        forwardAll=b;
    }

    /** 
     *  Special option - do not generate mappings for the ROOT
     *  context. The default is true, and will not generate the mappings,
     *  not redirecting all pages to tomcat (since /* matches everything).
     *  This means that the web server's root remains intact but isn't
     *  completely servlet/JSP enabled. If the ROOT webapp can be configured
     *  with the web server serving static files, there's no problem setting
     *   this option to false. If not, then setting it true means the web
     *   server will be out of picture for all requests.
     */
    public void setNoRoot( boolean b ) {
        noRoot=b;
    }
    
    /**
     *  set a path to the parent directory of the
     *  conf folder.  That is, the parent directory
     *  within which path setters would be resolved against,
     *  if relative.  For example if ConfigHome is set to "/home/tomcat"
     *  and regConfig is set to "conf/mod_jk.conf" then the resulting 
     *  path used would be: 
     *  "/home/tomcat/conf/mod_jk.conf".</p>
     *  <p>
     *  However, if the path is set to an absolute path,
     *  this attribute is ignored.
     *  <p>
     *  If not set, execute() will set this to TOMCAT_HOME.
     *  @param dir - path to a directory
     */
    public void setConfigHome(String dir){
        if( dir==null ) return;
        File f=new File(dir);
        if(!f.isDirectory()){
            throw new IllegalArgumentException(
                "BaseConfig.setConfigHome(): "+
                "Configuration Home must be a directory! : "+dir);
        }
        configHome = f;
    }

    /**
     *  set a path to the workers.properties file.
     *  @param path String path to workers.properties file
     */
    public void setWorkersConfig(String path){
        workersConfig= (path==null?null:new File(path));
    }

    /**
     *  set the path to the log file
     *   @param path String path to a file
     */
    public void setJkLog(String path){
        jkLog = ( path==null ? null : new File(path));
    }

    /** 
     *  Set the verbosity level
     *  ( use debug, error, etc. ) If not set, no log is written.
     */
    public void setJkDebug( String level ) {
        jkDebug=level;
    }

    /**
     *   Sets the JK worker.
     *   @param worker The worker
     */
    public void setJkWorker(String worker){
        jkWorker = worker;
    }

    public void setLegacy(boolean legacy) {
        this.legacy = legacy;
    }

    // -------------------- Initialize/guess defaults --------------------

    /** 
     *  Initialize defaults for properties that are not set
     *   explicitely
     */
    protected void initProperties() {
        tomcatHome = System.getProperty("catalina.home");
        File tomcatDir = new File(tomcatHome);
        if(configHome==null){
            configHome=tomcatDir;
        }
    }

    // -------------------- Config Utils  --------------------


    /** 
     * Add an extension mapping. Override with method to generate
     *   web server specific configuration
     */
    protected boolean addExtensionMapping( String ctxPath, String ext,
                                         PrintWriter pw ) {
        return true;
    }
    
    
    /** 
     * Add a fulling specified mapping.  Override with method to generate
     * web server specific configuration
     */
    protected boolean addMapping( String fullPath, PrintWriter pw ) {
        return true;
    }

    // -------------------- General Utils --------------------

    protected String getAbsoluteDocBase(Context context) {
        // Calculate the absolute path of the document base
        String docBase = context.getServletContext().getRealPath("/");
        docBase = docBase.substring(0,docBase.length()-1);
        if (!isAbsolute(docBase)){
            docBase = tomcatHome + "/" + docBase;
        }
        docBase = patch(docBase);
        return docBase;
    }

    // ------------------ Grabbed from FileUtil -----------------
    public static File getConfigFile( File base, File configDir, String defaultF )
    {
        if( base==null )
            base=new File( defaultF );
        if( ! base.isAbsolute() ) {
            if( configDir != null )
                base=new File( configDir, base.getPath());
            else
                base=new File( base.getAbsolutePath()); //??
        }
        File parent=new File(base.getParent());
        if(!parent.exists()){
            if(!parent.mkdirs()){
                throw new RuntimeException(
                    "Unable to create path to config file :"+
                    base.getAbsolutePath());
            }
        }
        return base;
    }

    public static String patch(String path) {
        String patchPath = path;

        // Move drive spec to the front of the path
        if (patchPath.length() >= 3 &&
            patchPath.charAt(0) == '/'  &&
            Character.isLetter(patchPath.charAt(1)) &&
            patchPath.charAt(2) == ':') {
            patchPath=patchPath.substring(1,3)+"/"+patchPath.substring(3);
        }

        // Eliminate consecutive slashes after the drive spec
        if (patchPath.length() >= 2 &&
            Character.isLetter(patchPath.charAt(0)) &&
            patchPath.charAt(1) == ':') {
            char[] ca = patchPath.replace('/', '\\').toCharArray();
            char c;
            StringBuffer sb = new StringBuffer();

            for (int i = 0; i < ca.length; i++) {
                if ((ca[i] != '\\') ||
                    (ca[i] == '\\' &&
                        i > 0 &&
                        ca[i - 1] != '\\')) {
                    if (i == 0 &&
                        Character.isLetter(ca[i]) &&
                        i < ca.length - 1 &&
                        ca[i + 1] == ':') {
                        c = Character.toUpperCase(ca[i]);
                    } else {
                        c = ca[i];
                    }

                    sb.append(c);
                }
            }

            patchPath = sb.toString();
        }

        // fix path on NetWare - all '/' become '\\' and remove duplicate '\\'
        if (System.getProperty("os.name").startsWith("NetWare") &&
            path.length() >=3 &&
            path.indexOf(':') > 0) {
            char[] ca = patchPath.replace('/', '\\').toCharArray();
            StringBuffer sb = new StringBuffer();

            for (int i = 0; i < ca.length; i++) {
                if ((ca[i] != '\\') ||
                    (ca[i] == '\\' && i > 0 && ca[i - 1] != '\\')) {
                    sb.append(ca[i]);
                }
            }
            patchPath = sb.toString();
        }

        return patchPath;
    }

    public static boolean isAbsolute( String path ) {
        // normal file
        if( path.startsWith("/" ) ) return true;

        if( path.startsWith(File.separator ) ) return true;

        // win c:
        if (path.length() >= 3 &&
            Character.isLetter(path.charAt(0)) &&
            path.charAt(1) == ':')
            return true;

        // NetWare volume:
        if (System.getProperty("os.name").startsWith("NetWare") &&
            path.length() >=3 &&
            path.indexOf(':') > 0)
            return true;

        return false;
    }
}

⌨️ 快捷键说明

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