2016-08-18 2 views
1

ist standardmäßig AppBase konfiguriert TomEE der webapps Ordner zeigen:Tomcat-Verzeichnis "appBase" programmgesteuert abrufen?

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

ich die Position von „appBase“ programmatisch finden möchte, weil es verschiedene Orte auf unserem Produktionsserver und unsere Entwicklung Boxen verweist auf (und weil es auf diese Weise einfach sauberer wäre).

Ich habe ein paar Optionen recherchiert, und die, die für andere zu funktionieren scheint, ruft . Für mich bringt mich das in einen temporären Ordner, $CATALINA_HOME/temp/[#-AppName], während ich standardmäßig nach $CATALINA_HOME/webapps suchte.

Antwort

1

fand ich die Antwort Abarbeiten von dem, was jemand anderes schrieb am this question.

Von Tomcat Host-Klasse Sie die AppBase finden:

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

Problem mit host.getAppBase() ist, dass Sie lösen müssen es selbst (kann absolut oder relativ sein) also nicht vergessen zu verwenden https://github.com/apache/tomee/blob/4b9d8c9d221948547d49427077fcf68709a186bd/tomee/tomee-loader/src/main/java/org/apache/tomee/loader/OpenEJBListener.java#L192

Tipp: wenn Sie nicht auf JMX verlassen möchten (normalerweise neuer ObjectName ("Catalina", "type", "Server") ; hängt den Namen ab, den Sie in Ihrer server.xm festgelegt haben l und Catalina kann so ändern Sie einen Platzhalter verwenden müssen auf diesem impl verlassen) Sie tomee TomcatHelper.getServer() verwenden können, um den Server zu erhalten, dann Kinder Surfen Sie erhalten den Gastgeber: https://github.com/apache/tomee/blob/4b9d8c9d221948547d49427077fcf68709a186bd/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java#L285

Verwandte Themen