2016-08-18 1 views
1

Par défaut, Appbase est configuré pour pointer vers le dossier webapps de tomee:Obtenir le répertoire "appBase" de Tomcat par programme?

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 

Je voudrais trouver l'emplacement de « appBase » programme car il pointe vers différents endroits sur notre serveur de production et nos boîtes de développement (et parce que ce serait juste plus propre de cette façon).

J'ai étudié quelques options, et celle qui semble fonctionner pour les autres appelle ServletContext().getRealPath("/"). Pour moi, cela me prend à un dossier temporaire, $CATALINA_HOME/temp/[#-AppName], tandis que par défaut je cherchais $CATALINA_HOME/webapps.

Répondre

1

Je trouve la réponse à travailler hors de ce que quelqu'un d'autre a écrit sur this question.

De la classe d'accueil de Tomcat, vous pouvez trouver le Appbase:

MBeanServer mBeanServer = MBeanServerFactory.findMBeanServer(null).get(0); 
    ObjectName name = new ObjectName("Catalina", "type", "Server"); 
    Server server = (Server) mBeanServer.getAttribute(name, "managedResource"); 
    Service service = server.findService("Catalina"); 
    Engine engine = (Engine) service.getContainer(); 
    Host host = (Host) engine.findChild(engine.getDefaultHost()); 

    host.getAppBase(); //Got it. 
0

problème en utilisant host.getAppBase() est que vous devez résoudre Astuce: si vous ne voulez pas compter sur JMX (typiquement new ObjectName ("Catalina", "type", "Serveur") https://github.com/apache/tomee/blob/4b9d8c9d221948547d49427077fcf68709a186bd/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java#L192

; dépend du nom que vous avez défini dans votre serveur.xm l et Catalina peut changer donc vous devez utiliser un caractère générique pour compter sur ce impl) vous pouvez utiliser tomee TomcatHelper.getServer() pour obtenir le serveur puis en parcourant les enfants vous obtenez l'hôte: https://github.com/apache/tomee/blob/4b9d8c9d221948547d49427077fcf68709a186bd/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java#L285