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

📄 testjndi.java

📁 是离开的肌肤了卡机是离开的就富利卡及是了的开发及拉考试及的福利科技阿斯利康的肌肤莱卡及时的离开福建阿斯顿发
💻 JAVA
字号:
// ========================================================================// $Id: TestJNDI.java 3680 2008-09-21 10:37:13Z janb $// Copyright 1999-2004 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.naming.java;import java.net.URL;import java.net.URLClassLoader;import java.util.HashMap;import java.util.Hashtable;import javax.naming.Context;import javax.naming.InitialContext;import javax.naming.LinkRef;import javax.naming.Name;import javax.naming.NameAlreadyBoundException;import javax.naming.NameClassPair;import javax.naming.NameNotFoundException;import javax.naming.NamingEnumeration;import javax.naming.NamingException;import javax.naming.Reference;import javax.naming.StringRefAddr;import javax.naming.spi.ObjectFactory;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;import org.mortbay.log.Log;import org.mortbay.naming.NamingContext;public class TestJNDI extends TestCase{    public static class MyObjectFactory implements ObjectFactory    {        public static String myString = "xxx";        public Object getObjectInstance(Object obj,                                        Name name,                                        Context nameCtx,                                        Hashtable environment)            throws Exception            {                return myString;            }    }    public TestJNDI (String name)    {        super (name);    }    public static Test suite ()    {        return new TestSuite (TestJNDI.class);    }    public void setUp ()        throws Exception    {    }    public void tearDown ()        throws Exception    {    }    public void testIt ()    throws Exception    {        try        {            //set up some classloaders            Thread currentThread = Thread.currentThread();            ClassLoader currentLoader = currentThread.getContextClassLoader();            ClassLoader childLoader1 = new URLClassLoader(new URL[0], currentLoader);            ClassLoader childLoader2 = new URLClassLoader(new URL[0], currentLoader);            //set the current thread's classloader            currentThread.setContextClassLoader(childLoader1);            InitialContext initCtxA = new InitialContext();            initCtxA.bind ("blah", "123");            assertEquals ("123", initCtxA.lookup("blah"));            InitialContext initCtx = new InitialContext();            Context sub0 = (Context)initCtx.lookup("java:");            if(Log.isDebugEnabled())Log.debug("------ Looked up java: --------------");            Name n = sub0.getNameParser("").parse("/red/green/");            if(Log.isDebugEnabled())Log.debug("get(0)="+n.get(0));            if(Log.isDebugEnabled())Log.debug("getPrefix(1)="+n.getPrefix(1));            n = n.getSuffix(1);            if(Log.isDebugEnabled())Log.debug("getSuffix(1)="+n);            if(Log.isDebugEnabled())Log.debug("get(0)="+n.get(0));            if(Log.isDebugEnabled())Log.debug("getPrefix(1)="+n.getPrefix(1));            n = n.getSuffix(1);            if(Log.isDebugEnabled())Log.debug("getSuffix(1)="+n);            if(Log.isDebugEnabled())Log.debug("get(0)="+n.get(0));            if(Log.isDebugEnabled())Log.debug("getPrefix(1)="+n.getPrefix(1));            n = n.getSuffix(1);            if(Log.isDebugEnabled())Log.debug("getSuffix(1)="+n);            n = sub0.getNameParser("").parse("pink/purple/");            if(Log.isDebugEnabled())Log.debug("get(0)="+n.get(0));            if(Log.isDebugEnabled())Log.debug("getPrefix(1)="+n.getPrefix(1));            n = n.getSuffix(1);            if(Log.isDebugEnabled())Log.debug("getSuffix(1)="+n);            if(Log.isDebugEnabled())Log.debug("get(0)="+n.get(0));            if(Log.isDebugEnabled())Log.debug("getPrefix(1)="+n.getPrefix(1));            NamingContext ncontext = (NamingContext)sub0;            Name nn = ncontext.toCanonicalName(ncontext.getNameParser("").parse("/yellow/blue/"));            Log.debug(nn.toString());            assertEquals (2, nn.size());            nn = ncontext.toCanonicalName(ncontext.getNameParser("").parse("/yellow/blue"));            Log.debug(nn.toString());            assertEquals (2, nn.size());            nn = ncontext.toCanonicalName(ncontext.getNameParser("").parse("/"));            if(Log.isDebugEnabled())Log.debug("/ parses as: "+nn+" with size="+nn.size());            Log.debug(nn.toString());            assertEquals (1, nn.size());            nn = ncontext.toCanonicalName(ncontext.getNameParser("").parse(""));            Log.debug(nn.toString());            assertEquals (0, nn.size());            Context fee = ncontext.createSubcontext("fee");            fee.bind ("fi", "88");            assertEquals("88", initCtxA.lookup("java:/fee/fi"));            assertEquals("88", initCtxA.lookup("java:/fee/fi/"));            assertTrue (initCtxA.lookup("java:/fee/") instanceof javax.naming.Context);            try            {                Context sub1 = sub0.createSubcontext ("comp");                fail("Comp should already be bound");            }            catch (NameAlreadyBoundException e)            {                //expected exception            }            //check bindings at comp            Context sub1 = (Context)initCtx.lookup("java:comp");            Context sub2 = sub1.createSubcontext ("env");            initCtx.bind ("java:comp/env/rubbish", "abc");            assertEquals ("abc", (String)initCtx.lookup("java:comp/env/rubbish"));            //check binding LinkRefs            LinkRef link = new LinkRef ("java:comp/env/rubbish");            initCtx.bind ("java:comp/env/poubelle", link);            assertEquals ("abc", (String)initCtx.lookup("java:comp/env/poubelle"));            //check binding References            StringRefAddr addr = new StringRefAddr("blah", "myReferenceable");            Reference ref = new Reference (java.lang.String.class.getName(),                    addr,                    MyObjectFactory.class.getName(),                    (String)null);            initCtx.bind ("java:comp/env/quatsch", ref);            assertEquals (MyObjectFactory.myString, (String)initCtx.lookup("java:comp/env/quatsch"));            //test binding something at java:            Context sub3 = initCtx.createSubcontext("java:zero");            initCtx.bind ("java:zero/one", "ONE");            assertEquals ("ONE", initCtx.lookup("java:zero/one"));            //change the current thread's classloader to check distinct naming                                                          currentThread.setContextClassLoader(childLoader2);            Context otherSub1 = (Context)initCtx.lookup("java:comp");            assertTrue (!(sub1 == otherSub1));            try            {                initCtx.lookup("java:comp/env/rubbish");            }            catch (NameNotFoundException e)            {                //expected            }            //put the thread's classloader back            currentThread.setContextClassLoader(childLoader1);            //test rebind with existing binding            initCtx.rebind("java:comp/env/rubbish", "xyz");            assertEquals ("xyz", initCtx.lookup("java:comp/env/rubbish"));            //test rebind with no existing binding            initCtx.rebind ("java:comp/env/mullheim", "hij");            assertEquals ("hij", initCtx.lookup("java:comp/env/mullheim"));            //test that the other bindings are already there                   assertEquals ("xyz", (String)initCtx.lookup("java:comp/env/poubelle"));            //test java:/comp/env/stuff            assertEquals ("xyz", (String)initCtx.lookup("java:/comp/env/poubelle/"));            //test list Names            NamingEnumeration nenum = initCtx.list ("java:comp/env");            HashMap results = new HashMap();            while (nenum.hasMore())            {                NameClassPair ncp = (NameClassPair)nenum.next();                results.put (ncp.getName(), ncp.getClassName());            }            assertEquals (4, results.size());            assertEquals ("java.lang.String", (String)results.get("rubbish"));            assertEquals ("javax.naming.LinkRef", (String)results.get("poubelle"));            assertEquals ("java.lang.String", (String)results.get("mullheim"));            assertEquals ("javax.naming.Reference", (String)results.get("quatsch"));            //test list Bindings            NamingEnumeration benum = initCtx.list("java:comp/env");            assertEquals (4, results.size());            //test NameInNamespace            assertEquals ("comp/env", sub2.getNameInNamespace());            //test close does nothing            Context closeCtx = (Context)initCtx.lookup("java:comp/env");            closeCtx.close();            //test what happens when you close an initial context            InitialContext closeInit = new InitialContext();            closeInit.close();            //check locking the context            Context ectx = (Context)initCtx.lookup("java:comp");            ectx.bind("crud", "xxx");            ectx.addToEnvironment("org.mortbay.jndi.immutable", "TRUE");            assertEquals ("xxx", (String)initCtx.lookup("java:comp/crud"));            try            {                ectx.bind("crud2", "xxx2");            }            catch (NamingException ne)            {                //expected failure to modify immutable context            }            //test what happens when you close an initial context that was used            initCtx.close();           }        finally        {            InitialContext ic = new InitialContext();            Context comp = (Context)ic.lookup("java:comp");            comp.destroySubcontext("env");        }    } }

⌨️ 快捷键说明

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