log.debug("AbstractWebContainer.parseWebAppDescriptors, Begin");
InitialContext iniCtx = new InitialContext();
Context envCtx = null;
Thread currentThread = Thread.currentThread();
ClassLoader currentLoader = currentThread.getContextClassLoader();
JBossWebMetaData metaData = webApp.getMetaData();
try
{
// Create a java:comp/env environment unique for the web application
log.debug("Creating ENC using ClassLoader: " + loader);
ClassLoader parent = loader.getParent();
while (parent != null)
{
log.debug(".." + parent);
parent = parent.getParent();
}
// TODO: The enc should be an input?
currentThread.setContextClassLoader(loader);
// webApp.setENCLoader(loader);
envCtx = (Context)iniCtx.lookup("java:comp");
// TODO: inject the ORB
try
{
ObjectName ORB_NAME = new ObjectName("jboss:service=CorbaORB");
org.omg.CORBA.ORB orb = (org.omg.CORBA.ORB)server.getAttribute(ORB_NAME, "ORB");
// Bind the orb
if (orb != null)
{
NonSerializableFactory.rebind(envCtx, "ORB", orb);
log.debug("Bound java:comp/ORB");
}
}
catch (Throwable t)
{
log.debug("Unable to retrieve orb" + t.toString());
}
// TODO: injection, Add a link to the global transaction manager
envCtx.bind("UserTransaction", new LinkRef("UserTransaction"));
log.debug("Linked java:comp/UserTransaction to JNDI name: UserTransaction");
envCtx = envCtx.createSubcontext("env");
processEncReferences(webApp, envCtx);
}
finally
{
currentThread.setContextClassLoader(currentLoader);
}
String securityDomain = metaData.getSecurityDomain();
log.debug("linkSecurityDomain");
linkSecurityDomain(securityDomain, envCtx);
log.debug("AbstractWebContainer.parseWebAppDescriptors, End");
}