2

我有一个奇怪的问题。我公司的安全部门希望每个 tomcat 都遵守以下配置参数:

autoDeploy="false"
deployOnStartup="false"

当我配置上述参数时,不会在启动时部署任何 Web 应用程序(包括管理器应用程序),并且我无法通过管理器应用程序部署应用程序...

我可以在 server.xml 或类似的东西中定义管理器应用程序的部署吗?我只想在启动时部署管理器应用程序。

编辑:这是我的 ${CATALINA_HOME}/conf/server.xml

...
<Service name="Catalina">
...

<Engine name="Catalina" defaultHost="localhost">
...
<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="false"
            deployOnStartup="false"
            xmlValidation="false" xmlNamespaceAware="false"
            deployXml="false">
...

这是我的 ${CATALINA_HOME}/webapps/manager/META-INF/context.xml

<Context path="/manager"
        docBase="/usr/share/tomcat6/webapps/manager"
        debug="0"
        privileged="true"
        autoDeploy="true"
        deployOnStartup="true">

    <ResourceLink name="users"
                global="UserDatabase"
                type="org.apache.catalina.UserDatabase"/>

    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
                allow="127.0.0.1"/>

</Context>

打招呼

格茨

4

2 回答 2

1

从 Apache 6 文档: https ://tomcat.apache.org/tomcat-6.0-doc/config/context.html 在Context 的 Attributes 部分中, path属性的文档指定:

只有在 server.xml 中静态定义 Context 时才必须使用此属性。在所有其他情况下,将从用于 .xml 上下文文件或 docBase 的文件名推断路径。

即使在 server.xml 中静态定义 Context 时,也不得设置此属性,除非docBase 不在 Host 的 appBase 下,或者deployOnStartup 和 autoDeploy 都为 false。如果不遵守此规则,很可能导致双重部署。

Tomcat 7 中存在相同的文档,因此我在 Tomcat 7 上尝试了以下操作,并设法仅部署了管理器应用程序。

<Host appBase="webapps"  autoDeploy="false"  deployOnStartup="false" name="localhost" unpackWARs="true">
        <Context docBase="manager" 
               path="/manager"  
               antiResourceLocking="false" privileged="true" 
               />
</Host>

基本上,我所做的是复制webapps/manager/META-INF/context.xml的内容并将它们粘贴到server.xml的<Host>元素中,当然要确保路径docBase属性也存在,正如文档指定的那样。在你的情况下,我相信它会是:

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="false"
            deployOnStartup="false"
            xmlValidation="false" xmlNamespaceAware="false"
            deployXml="false">

<Context path="/manager"
        docBase="/usr/share/tomcat6/webapps/manager"
        debug="0"
        privileged="true">

    <ResourceLink name="users"
                global="UserDatabase"
                type="org.apache.catalina.UserDatabase"/>

    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
                allow="127.0.0.1"/>

</Context>

</Host>
于 2016-02-04T14:16:10.937 回答
0

您可以从此 链接获得帮助,我认为这是您正在寻找的解决方案。

于 2014-11-12T14:46:01.883 回答