【问题标题】:What sets ${catalina.home} in Tomcat 6 config files?在 Tomcat 6 配置文件中设置 ${catalina.home} 是什么?
【发布时间】:2012-03-30 17:35:52
【问题描述】:

我正在尝试调整一些旧的构建脚本以在 Tomcat 6 的 RPM 安装中运行,但我遇到了以下问题:

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 .那么${catalina.home} 是什么,/var/lib/tomcat6 是如何替代它的呢?

【问题讨论】:

    标签: tomcat tomcat6


    【解决方案1】:

    查看您的 ${TOMCAT_HOME}/bin/catalina.sh 文件 - 向下滚动到开始部分 - catalina.home 系统属性是从 CATALINA_HOME 环境变量设置的:

    -Dcatalina.home=\"$CATALINA_HOME\"
    

    现在,为什么这与您设置的 CATALINA_HOME env 变量不同 - 您需要检查您的 tomcat 服务器是如何启动的,特别是在进程中设置了哪些环境变量 /启动它的上下文。

    那么你是如何启动你的 tomcat 实例的呢?

    【讨论】:

    • 我是从 catalina.sh 开始的。没有深入了解它为什么不使用环境变量,但是通过安装 tomcat6-admin-webapps RPM 解决了这个特殊问题,它将这些文件放在 /var/lib 中它正在寻找它们的位置.
    猜你喜欢
    • 2023-03-25
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 2010-11-24
    相关资源
    最近更新 更多