Что устанавливает $ {catalina.home} в конфигурационных файлах Tomcat 6? - PullRequest
6 голосов
/ 30 марта 2012

Я пытаюсь адаптировать некоторые старые сценарии сборки для запуска с установкой RPM Tomcat 6, и я сталкиваюсь со следующим:

java.lang.IllegalArgumentException: Document base /var/lib/tomcat6/webapps/host-manager does not exist or is not a readable directory
    at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:142)
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4086)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4255)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:593)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)

Это неудивительно, поскольку Tomcat не в /var/lib/tomcat6, а в /usr/share/tomcat6. Когда я ищу, откуда это может быть, все, что я нахожу, это следующее в файле с именем host-manager.xml:

<Context docBase="${catalina.home}/webapps/host-manager"
     privileged="true" antiResourceLocking="false" antiJARLocking="false">

</Context>

Теперь у меня $CATALINA_HOME установлено на /usr/share/tomcat6, как и должно быть, и нет ссылок на /var/lib где-либо в моем веб-приложении (включая конфигурацию) или установке Tomcat 6, насколько я могу судить , Так что же такое ${catalina.home} и как его заменяет /var/lib/tomcat6

1 Ответ

10 голосов
/ 30 марта 2012

Посмотрите в файле ${TOMCAT_HOME}/bin/catalina.sh - прокрутите вниз до начального раздела - системное свойство catalina.home установлено из переменной CATALINA_HOME env:

-Dcatalina.home=\"$CATALINA_HOME\"

Теперь о том, почему это не то же самое, что у вас установлена ​​CATALINA_HOME переменная env - вам нужно проверить, как запускается ваш сервер Tomcat, в частности, какие переменные среды установлены в процессе / контекст, из которого он запускается.

Так как вы запускаете свой экземпляр tomcat?

...