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

📄 standardcontextsftest.java

📁 精通tomcat书籍原代码,希望大家共同学习
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * Copyright 1999-2001,2004 The Apache Software Foundation.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.catalina.storeconfig;

import java.io.PrintWriter;
import java.io.StringWriter;

import javax.naming.directory.DirContext;

import junit.framework.TestCase;

import org.apache.catalina.LifecycleListener;
import org.apache.catalina.Valve;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.core.StandardHost;
import org.apache.catalina.deploy.ContextResourceEnvRef;
import org.apache.catalina.deploy.ContextResourceLink;
import org.apache.catalina.deploy.NamingResources;
import org.apache.catalina.realm.JAASRealm;
import org.apache.catalina.session.FileStore;
import org.apache.catalina.session.JDBCStore;
import org.apache.catalina.session.PersistentManager;
import org.apache.catalina.session.StandardManager;
import org.apache.catalina.storeconfig.StandardContextSF;
import org.apache.catalina.storeconfig.StoreDescription;
import org.apache.catalina.storeconfig.StoreRegistry;
import org.apache.naming.resources.FileDirContext;
import org.apache.naming.resources.ProxyDirContext;
import org.apache.naming.resources.WARDirContext;

/**
 * @author Peter Rossbach
 *  
 */
public class StandardContextSFTest extends TestCase {
    StoreRegistry registry;

    StringWriter writer = new StringWriter();

    PrintWriter pWriter = new PrintWriter(writer);

    StandardContext standardContext;

    StandardContextSF factory;

    StoreDescription desc;

    /*
     * create registery and register Context and all subelements
     * 
     * @see junit.framework.TestCase#setUp()
     */
    protected void setUp() throws Exception {

        super.setUp();
        registry = new StoreRegistry();
        desc = new StoreDescription();
        desc.setTag("Context");
        desc.setTagClass("org.apache.catalina.core.StandardContext");
        desc.setStandard(true);
        desc
                .setStoreFactoryClass("org.apache.catalina.storeconfig.StandardContextSF");
        String exceptions[] = { "available", "configFile", "configured",
                "distributable", "domain", "engineName", "name", "override",
                "publicId", "replaceWelcomeFiles", "sessionTimeout",
                "startupTime", "tldScanTime" };
        for (int i = 0; i < exceptions.length; i++)
            desc.addTransientAttribute(exceptions[i]);

        registry.registerDescription(desc);
        factory = new StandardContextSF();
        desc.setStoreFactory(factory);
        factory.setRegistry(registry);

        StoreDescription listenerdesc = registerDescriptor("Listener",
                LifecycleListener.class);

        String listenerskippables[] = {
                "org.apache.catalina.core.NamingContextListener",
                "org.apache.catalina.startup.ContextConfig", };
        for (int i = 0; i < listenerskippables.length; i++)
            listenerdesc.addTransientChild(listenerskippables[i]);

        StoreDescription realmdesc = registerDescriptor("Realm",
                JAASRealm.class,
                "org.apache.catalina.storeconfig.StoreFactoryBase", false,
                false);
        StoreDescription managerdesc = registerDescriptor("Manager",
                StandardManager.class,
                "org.apache.catalina.storeconfig.ManagerSF", false, false);
        managerdesc.addTransientAttribute("entropy");
        managerdesc.addTransientAttribute("distributable");
        StoreDescription pmanagerdesc = registerDescriptor("Manager",
                PersistentManager.class,
                "org.apache.catalina.storeconfig.PersistentManagerSF", false,
                false);
        pmanagerdesc.addTransientAttribute("entropy");
        pmanagerdesc.addTransientAttribute("distributable");
        DescriptorHelper.registerDescriptor(pmanagerdesc, registry,
                FileStore.class.getName(), "Store", FileStore.class.getName(),
                "org.apache.catalina.storeconfig.StoreFactoryBase", false,
                false);
        DescriptorHelper.registerDescriptor(pmanagerdesc, registry,
                JDBCStore.class.getName(), "Store", JDBCStore.class.getName(),
                "org.apache.catalina.storeconfig.StoreFactoryBase", false,
                false);
        DescriptorHelper.registerNamingDescriptor(desc, registry);
        StoreDescription valvedesc = registerDescriptor("Valve", Valve.class,
                "org.apache.catalina.storeconfig.StoreFactoryBase", false,
                false);
        String skippables[] = {
                "org.apache.catalina.authenticator.BasicAuthenticator",
                "org.apache.catalina.authenticator.DigestAuthenticator",
                "org.apache.catalina.authenticator.FormAuthenticator",
                "org.apache.catalina.authenticator.NonLoginAuthenticator",
                "org.apache.catalina.authenticator.SSLAuthenticator",
                "org.apache.catalina.core.StandardContextValve",
                "org.apache.catalina.valves.CertificatesValve" };
        for (int i = 0; i < skippables.length; i++)
            valvedesc.addTransientChild(skippables[i]);

        StoreDescription resdesc = registerDescriptor("Resources",
                DirContext.class,
                "org.apache.catalina.storeconfig.StoreFactoryBase", false,
                false);
        resdesc.addTransientAttribute("docBase");
        resdesc.addTransientAttribute("allowLinking");
        resdesc.addTransientAttribute("cacheMaxSize");
        resdesc.addTransientAttribute("cacheTTL");
        resdesc.addTransientAttribute("caseSensitive");
        resdesc.addTransientChild(FileDirContext.class.getName());
        resdesc.addTransientChild(ProxyDirContext.class.getName());
        resdesc.addTransientChild(WARDirContext.class.getName());
        standardContext = new StandardContext();
        standardContext.setPath("/myapps");
        standardContext.setDocBase("myapps");

    }

    private StoreDescription registerDescriptor(String tag, Class aClass) {
        return registerDescriptor(tag, aClass,
                "org.apache.catalina.storeconfig.StoreFactoryBase", false,
                false);
    }

    private StoreDescription registerDescriptor(String tag, Class aClass,
            String factoryClass, boolean fstandard, boolean fdefault) {
        return DescriptorHelper.registerDescriptor(desc, registry, aClass
                .getName(), tag, aClass.getName(), factoryClass, fstandard,
                fdefault);
    }

    /**
     * @TODO Listener only saved at real context. Wrong when next Context
     *       deployed! see Changes.txt
     * @throws Exception
     */
    public void testListenerStore() throws Exception {
        standardContext
                .addLifecycleListener(new org.apache.catalina.storeconfig.InfoLifecycleListener());
        standardContext
                .addInstanceListener("org.apache.catalina.ContainerListener");

⌨️ 快捷键说明

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