ClassLoader loader = Thread.currentThread().getContextClassLoader();
metaData.setContextLoader(loader);
StandardContext context = (StandardContext)Class.forName(config.getContextClassName()).newInstance();
DeploymentUnit depUnit = webApp.getDeploymentUnit();
// Find all TLDs that have been processed by deployers, and place them in a map keyed by location
Map<String, TldMetaData> tldMetaDataMap = new HashMap<String, TldMetaData>();
Map<String, Object> attachements = depUnit.getAttachments();
Iterator<String> attachementNames = attachements.keySet().iterator();
while (attachementNames.hasNext()) {
String name = attachementNames.next();
Object attachement = depUnit.getAttachment(name);
if (attachement != null && attachement instanceof TldMetaData
&& name.startsWith(TldMetaData.class.getName() + ":"))
{
tldMetaDataMap.put(name, (TldMetaData) attachement);
}
}
List<TldMetaData> sharedTldMetaData = (List<TldMetaData>)
depUnit.getAttachment(SharedTldMetaDataDeployer.SHARED_TLDS_ATTACHMENT_NAME);
if (sharedTldMetaData != null)
{
for (TldMetaData tldMetaData : sharedTldMetaData)
{
tldMetaDataMap.put("shared:" + tldMetaData.toString(), tldMetaData);
}
}
this.component = createJavaEEComponent();
TomcatInjectionContainer injectionContainer =
new TomcatInjectionContainer(webApp, depUnit, context,
getPersistenceUnitDependencyResolver(), config.getDynamicClassloaders(), component, this.getInjectionManager());
Loader webLoader = depUnit.getAttachment(Loader.class);
if (webLoader == null)
webLoader = getWebLoader(depUnit, metaData, loader, warUrl, injectionContainer);
webApp.setName(warUrl.getPath());
webApp.setClassLoader(loader);
webApp.setURL(warUrl);
String objectNameS = config.getCatalinaDomain() + ":j2eeType=WebModule,name=//" + ((hostName == null) ? "localhost" : hostName) + ctxPath
+ ",J2EEApplication=none,J2EEServer=none";
ObjectName objectName = new ObjectName(objectNameS);
if (Registry.getRegistry(null, null).getMBeanServer().isRegistered(objectName))
throw new DeploymentException("Web mapping already exists for deployment URL " + warUrlStr);
Registry.getRegistry(null, null).registerComponent(context, objectName, config.getContextClassName());
context.setInstanceManager(injectionContainer);
context.setPublicId(metaData.getPublicID());
String docBase = depUnit.getAttachment("org.jboss.web.explicitDocBase", String.class);
if (docBase == null)
docBase = VFS.getChild(warUrl).getPhysicalFile().getAbsolutePath();
context.setDocBase(docBase);