Berin, you can't.
Each InitialContext in the memory context is nothing more than a hierarchical hashmap and thus unique. That is, if you create two initial contexts they are separate and have nothing to do with each other. See (in Cocoon2): xml-cocoon2\src\org\apache\cocoon\samples\parentcm\Configurator.java xml-cocoon2\src\org\apache\cocoon\samples\parentcm\ParentComponentManager.ja va Then again, this may not be what you are trying to do. /LS > -----Original Message----- > From: Berin Loritsch [mailto:[EMAIL PROTECTED]] > Sent: den 1 oktober 2001 20:51 > To: [EMAIL PROTECTED] > Subject: Issues with Memory Context. > > > I am trying to use the Memory context to bind an object during init time > so that we can retrieve it later. I am having issues in that it > is claming > that the name I just bound is not bound. What is happening is that it is > not looking in the subcontexts: > > ------------------------ Code Snippet ------------------------------------ > > private static AxisClient getEngine() { > String provider = > System.getProperty("java.naming.factory.initial", null); > Context initCtx = null; This Context is lost when the method exits. > > if (null == provider) { > System.setProperty("java.naming.factory.initial", > > "org.apache.avalon.excalibur.naming.memory.MemoryInitialContextFactory"); > > try { > initCtx = new InitialContext(); > > initCtx.createSubcontext("java:comp").createSubcontext("env").crea > teSubcontext("axis"); > } catch (Exception e) { > e.printStackTrace(System.err); > throw new RuntimeException("Could not get client > instance: " + e.getMessage()); > } > } > > AxisClient client = null; > try { > if (initCtx == null) { > initCtx = new InitialContext(); > } > client = (AxisClient) > initCtx.lookup("java:comp/env/axis/Client"); > } catch (Exception e) { > // it wasn't there, so we bind the factory > try { > if (initCtx == null) { > initCtx = new InitialContext(); > } > Context context = (Context) new > InitialContext().lookup("java:comp/env"); > > try { > context = (Context) context.lookup("axis"); > } catch (Exception ne) { > context = context.createSubcontext("axis"); > } > > context.bind("java:comp/env/axis/Client", new > AxisEngineFactory()); > client = (AxisClient) > initCtx.lookup("java:comp/env/axis/Client"); > } catch (Exception ne) { > ne.printStackTrace(System.err); > throw new RuntimeException("Could not get client > instance: " + e.getMessage()); > } > } > > if (null == client) { > throw new RuntimeException("Could not get client instance"); > } > > return client; > } > > --------------------------------- End Snippet > --------------------------------- > > The stack trace I get is: > > javax.naming.NameNotFoundException: java:comp > at > org.apache.avalon.excalibur.naming.memory.MemoryContext.doLocalLoo > kup(MemoryContext.java:89) > at > org.apache.avalon.excalibur.naming.AbstractLocalContext.localLooku > p(AbstractLocalContext.java:309) > at > org.apache.avalon.excalibur.naming.AbstractLocalContext.lookupSubC > ontext(AbstractLocalContext.java:348) > at > org.apache.avalon.excalibur.naming.AbstractLocalContext.lookup(Abs > tractLocalContext.java:294) > at > org.apache.avalon.excalibur.naming.AbstractContext.lookup(Abstract > Context.java:246) > at javax.naming.InitialContext.lookup(InitialContext.java:350) > at > org.apache.axis.client.ServiceClient.getEngine(ServiceClient.java:160) > at org.apache.axis.client.ServiceClient.<init>(ServiceClient.java:302) > at > test.encoding.TestArrayListConversions.init(TestArrayListConversio > ns.java:55) > at > test.encoding.TestArrayListConversions.<init>(TestArrayListConvers > ions.java:26) > at java.lang.reflect.Constructor.newInstance(Native Method) > at junit.framework.TestSuite.addTestMethod(TestSuite.java:102) > at junit.framework.TestSuite.<init>(TestSuite.java:66) > at junit.framework.TestSuite.addTestSuite(TestSuite.java:90) > at test.encoding.PackageTests.suite(PackageTests.java:31) > at java.lang.reflect.Method.invoke(Native Method) > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.<init > >(JUnitTestRunner.java:191) > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.<init > >(JUnitTestRunner.java:156) > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main( > JUnitTestRunner.java:407) > javax.naming.NameNotFoundException: java:comp > at > org.apache.avalon.excalibur.naming.memory.MemoryContext.doLocalLoo > kup(MemoryContext.java:89) > at > org.apache.avalon.excalibur.naming.AbstractLocalContext.localLooku > p(AbstractLocalContext.java:309) > at > org.apache.avalon.excalibur.naming.AbstractLocalContext.lookupSubC > ontext(AbstractLocalContext.java:348) > at > org.apache.avalon.excalibur.naming.AbstractLocalContext.lookup(Abs > tractLocalContext.java:294) > at > org.apache.avalon.excalibur.naming.AbstractContext.lookup(Abstract > Context.java:246) > at javax.naming.InitialContext.lookup(InitialContext.java:350) > at > org.apache.axis.client.ServiceClient.getEngine(ServiceClient.java:160) > at org.apache.axis.client.ServiceClient.<init>(ServiceClient.java:302) > at > test.encoding.TestArrayListConversions.init(TestArrayListConversio > ns.java:55) > at > test.encoding.TestArrayListConversions.<init>(TestArrayListConvers > ions.java:26) > at java.lang.reflect.Constructor.newInstance(Native Method) > at junit.framework.TestSuite.addTestMethod(TestSuite.java:102) > at junit.framework.TestSuite.<init>(TestSuite.java:66) > at junit.framework.TestSuite.addTestSuite(TestSuite.java:90) > at test.encoding.PackageTests.suite(PackageTests.java:31) > at java.lang.reflect.Method.invoke(Native Method) > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.<init > >(JUnitTestRunner.java:191) > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.<init > >(JUnitTestRunner.java:156) > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main( > JUnitTestRunner.java:407) > javax.naming.NameNotFoundException: java:comp > at > org.apache.avalon.excalibur.naming.memory.MemoryContext.doLocalLoo > kup(MemoryContext.java:89) > at > org.apache.avalon.excalibur.naming.AbstractLocalContext.localLooku > p(AbstractLocalContext.java:309) > at > org.apache.avalon.excalibur.naming.AbstractLocalContext.lookupSubC > ontext(AbstractLocalContext.java:348) > at > org.apache.avalon.excalibur.naming.AbstractLocalContext.lookup(Abs > tractLocalContext.java:294) > at > org.apache.avalon.excalibur.naming.AbstractContext.lookup(Abstract > Context.java:246) > at javax.naming.InitialContext.lookup(InitialContext.java:350) > at > org.apache.axis.client.ServiceClient.getEngine(ServiceClient.java:160) > at org.apache.axis.client.ServiceClient.<init>(ServiceClient.java:302) > at > test.encoding.TestArrayListConversions.init(TestArrayListConversio > ns.java:55) > at > test.encoding.TestArrayListConversions.<init>(TestArrayListConvers > ions.java:26) > at java.lang.reflect.Constructor.newInstance(Native Method) > at junit.framework.TestSuite.addTestMethod(TestSuite.java:102) > at junit.framework.TestSuite.<init>(TestSuite.java:66) > at junit.framework.TestSuite.addTestSuite(TestSuite.java:90) > at test.encoding.PackageTests.suite(PackageTests.java:31) > at java.lang.reflect.Method.invoke(Native Method) > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.<init > >(JUnitTestRunner.java:191) > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.<init > >(JUnitTestRunner.java:156) > at > org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main( > JUnitTestRunner.java:407) > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]