Tomcat 7: Creation d'un context en runtime-> Error getConfigured

Signaler
Messages postés
264
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
-
Salut à tous,
Je tente désespérément de créer un context (plus précisément un standardcontext) "à la volée"!
J'ai une application principale, Master, qui est lancée de manière classique.
J'aimerai que, à partir de cette application, je puisse lancer plusieurs "sous-applications", prédéfinies (i.e. publiées), mais pas encore paramétrées ni intégrées dans mon tomcat (Donc elles n'ont pas de context dans aucun fichier de config)

Voici mon code actuel (dans un servlet de mon appli Master):
MBeanServer mBeanServer = MBeanServerFactory.findMBeanServer(null).get(0);	     	    		 
try {
ObjectName name = new ObjectName("Catalina", "type", "Server");
Server server= (Server) mBeanServer.getAttribute(name, "managedResource");
StandardEngine engine=null;
for(Service thisService:server.findServices())
{
if(thisService.getName().equals("Catalina"))
engine=(StandardEngine)thisService.getContainer();
}
StandardHost defaultHost=(StandardHost)engine.findChild(engine.getDefaultHost());
StandardContext ctx=new StandardContext();
ctx.setDocBase("D:\\MySubApp");
ctx.setAliases("/WebContent=D:\\frontend");
ctx.setParent(defaultHost);
ctx.setPath("/xxxx");
ctx.setConfigured(true);

ctx.init();
WebappLoader wal=new WebappLoader(ctx.getClass().getClassLoader());
wal.setContainer(ctx);
wal.init();
wal.start();
NonLoginAuthenticator nla =new NonLoginAuthenticator();
nla.setContainer(ctx);
nla.init();
nla.start();
//ctx.addChild(new Wrapper);
ctx.setConfigured(true);
defaultHost.addChild(ctx);

Comme vous pouvez le voir, je fais un peu au hasard concernant la paramétrisation du context.
En effet, un tel code me renvoie ces lignes :
mars 27, 2014 11:21:18 AM org.apache.catalina.core.StandardContext startInternal

GRAVE: Error getConfigured

Il ne renvoie pas que ca bien sur, mais rien d'autre d'intéressant... Et c'est bien le problème, puisque cette erreur "GRAVE" est la toute première que je recois (suivi d'une multitude d'autres, forcément!)

Donc, si quelqu'un peut me dire comment trouver l'origine de cette erreur, ou mieux, me dire quelle est mon erreur dans mon code, je lui serais très reconnaissant
A noter que la "sous application" marche trÈs bien quand je la lance en standalone.

Merci beaucoup
@+. Hermios