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]

Reply via email to