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

📄 configuration.java

📁 是离开的肌肤了卡机是离开的就富利卡及是了的开发及拉考试及的福利科技阿斯利康的肌肤莱卡及时的离开福建阿斯顿发
💻 JAVA
字号:
// ========================================================================// $Id: Configuration.java 3680 2008-09-21 10:37:13Z janb $// Copyright 2006 Mort Bay Consulting Pty. Ltd.// ------------------------------------------------------------------------// 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.mortbay.jetty.plus.webapp;import java.util.Random;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.NameNotFoundException;import org.mortbay.jetty.plus.naming.EnvEntry;import org.mortbay.jetty.plus.naming.Link;import org.mortbay.jetty.plus.naming.NamingEntry;import org.mortbay.jetty.plus.naming.NamingEntryUtil;import org.mortbay.jetty.plus.naming.Transaction;import org.mortbay.log.Log;import org.mortbay.naming.NamingUtil;/** * Configuration * * */public class Configuration extends AbstractConfiguration{    private Integer _key;            public Configuration ()    {    }        /**      * @see org.mortbay.jetty.plus.webapp.AbstractConfiguration#bindEnvEntry(java.lang.String, java.lang.String)     * @param name     * @param value     * @throws Exception     */    public void bindEnvEntry(String name, Object value) throws Exception    {            InitialContext ic = null;        boolean bound = false;        //check to see if we bound a value and an EnvEntry with this name already        //when we processed the server and the webapp's naming environment        //@see EnvConfiguration.bindEnvEntries()        ic = new InitialContext();        try        {            NamingEntry ne = (NamingEntry)ic.lookup("java:comp/env/"+NamingEntryUtil.makeNamingEntryName(ic.getNameParser(""), name));            if (ne!=null && ne instanceof EnvEntry)            {                EnvEntry ee = (EnvEntry)ne;                bound = ee.isOverrideWebXml();            }        }        catch (NameNotFoundException e)        {            bound = false;        }        if (!bound)        {            //either nothing was bound or the value from web.xml should override            Context envCtx = (Context)ic.lookup("java:comp/env");            NamingUtil.bind(envCtx, name, value);        }    }    /**      * Bind a resource reference.     *      * If a resource reference with the same name is in a jetty-env.xml     * file, it will already have been bound.     *      * @see org.mortbay.jetty.plus.webapp.AbstractConfiguration#bindResourceRef(java.lang.String)     * @param name     * @throws Exception     */    public void bindResourceRef(String name, Class typeClass)    throws Exception    {        bindEntry(name, typeClass);    }    /**      * @see org.mortbay.jetty.plus.webapp.AbstractConfiguration#bindResourceEnvRef(java.lang.String)     * @param name     * @throws Exception     */    public void bindResourceEnvRef(String name, Class typeClass)    throws Exception    {        bindEntry(name, typeClass);    }            public void bindMessageDestinationRef(String name, Class typeClass)    throws Exception    {        bindEntry(name, typeClass);    }        public void bindUserTransaction ()    throws Exception    {        try        {           Transaction.bindToENC();        }        catch (NameNotFoundException e)        {            Log.info("No Transaction manager found - if your webapp requires one, please configure one.");        }    }        public void configureClassLoader ()    throws Exception    {              super.configureClassLoader();    }        public void configureDefaults ()    throws Exception    {        super.configureDefaults();    }    public void configureWebApp ()    throws Exception    {        super.configureWebApp();        //lock this webapp's java:comp namespace as per J2EE spec        ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();        Thread.currentThread().setContextClassLoader(getWebAppContext().getClassLoader());        lockCompEnv();        Thread.currentThread().setContextClassLoader(oldLoader);    }        public void deconfigureWebApp() throws Exception    {        ClassLoader oldLoader = Thread.currentThread().getContextClassLoader();        Thread.currentThread().setContextClassLoader(getWebAppContext().getClassLoader());        unlockCompEnv();        Thread.currentThread().setContextClassLoader(oldLoader);        super.deconfigureWebApp();    }        protected void lockCompEnv ()    throws Exception    {        Random random = new Random ();        _key = new Integer(random.nextInt());        Context context = new InitialContext();        Context compCtx = (Context)context.lookup("java:comp");        compCtx.addToEnvironment("org.mortbay.jndi.lock", _key);    }        protected void unlockCompEnv ()    throws Exception    {        if (_key!=null)        {            Context context = new InitialContext();            Context compCtx = (Context)context.lookup("java:comp");            compCtx.addToEnvironment("org.mortbay.jndi.unlock", _key);         }    }    /**      * @see org.mortbay.jetty.plus.webapp.AbstractConfiguration#parseAnnotations()     */    public void parseAnnotations() throws Exception    {        Log.info(getClass().getName()+" does not support annotations on source. Use org.mortbay.jetty.annotations.Configuration instead");    }        /**     * Bind a resource with the given name from web.xml of the given type     * with a jndi resource from either the server or the webapp's naming      * environment.     *      * As the servlet spec does not cover the mapping of names in web.xml with     * names from the execution environment, jetty uses the concept of a Link, which is     * a subclass of the NamingEntry class. A Link defines a mapping of a name     * from web.xml with a name from the execution environment (ie either the server or the     * webapp's naming environment).     *      * @param name name of the resource from web.xml     * @param typeClass      * @throws Exception     */    private void bindEntry (String name, Class typeClass)    throws Exception    {        String nameInEnvironment = name;        boolean bound = false;                //check if the name in web.xml has been mapped to something else        //check a context-specific naming environment first        Object scope = getWebAppContext();        NamingEntry ne = NamingEntryUtil.lookupNamingEntry(scope, name);            if (ne!=null && (ne instanceof Link))        {            //if we found a mapping, get out name it is mapped to in the environment            nameInEnvironment = (String)((Link)ne).getObjectToBind();            Link l = (Link)ne;        }        //try finding that mapped name in the webapp's environment first        scope = getWebAppContext();        bound = NamingEntryUtil.bindToENC(scope, name, nameInEnvironment);                if (bound)            return;        //try the server's environment        scope = getWebAppContext().getServer();        bound = NamingEntryUtil.bindToENC(scope, name, nameInEnvironment);        if (bound)            return;        //try the jvm environment        bound = NamingEntryUtil.bindToENC(null, name, nameInEnvironment);        if (bound)            return;        //There is no matching resource so try a default name.        //The default name syntax is: the [res-type]/default        //eg       javax.sql.DataSource/default        nameInEnvironment = typeClass.getName()+"/default";        //First try the server scope        NamingEntry defaultNE = NamingEntryUtil.lookupNamingEntry(getWebAppContext().getServer(), nameInEnvironment);        if (defaultNE==null)            defaultNE = NamingEntryUtil.lookupNamingEntry(null, nameInEnvironment);                if (defaultNE!=null)            defaultNE.bindToENC(name);        else            throw new IllegalStateException("Nothing to bind for name "+nameInEnvironment);    }}

⌨️ 快捷键说明

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