/** * Creates a sub-context in the parent context with the provided name. * * @param context The start context * @throws StartException If any problems occur creating the context */ public synchronized void start(final StartContext context) throws StartException { store = new InMemoryNamingStore(); try { final Reference globalReference = GlobalNamespaceObjectFactory.createReference( name, (Context) store.lookup(new CompositeName())); final NamingStore javaContext = this.javaContext.getValue(); javaContext.rebind( null, NameParser.INSTANCE.parse(name), globalReference, Reference.class.getName()); } catch (NamingException e) { throw new StartException("Failed to bind EE context: java:" + name, e); } }
/** * Unbinds the context from the parent. * * @param context The stop context */ public synchronized void stop(StopContext context) { final NamingStore javaContext = this.javaContext.getValue(); try { javaContext.unbind(null, NameParser.INSTANCE.parse(name)); } catch (NamingException e) { throw new IllegalStateException("Failed to unbind EE context: java:" + name, e); } finally { try { store.close(); store = null; } catch (NamingException e) { throw new IllegalStateException("Failed to destroy root context", e); } } }