tomcat在启动时仅部署管理器

时间:2014-11-12 10:11:53

标签: tomcat startup manager-app

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

autoDeploy="false"
deployOnStartup="false"

当我配置上述参数时,将不会在启动时部署Web应用程序(包括manager-app),我无法通过manager-app部署应用程序......

我可以在server.xml中定义manager-app的部署或类似的东西吗?我只想在启动时部署manager-app。

编辑: 这是我的$ {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>

招呼

Goetz的

2 个答案:

答案 0 :(得分:1)

从Apache 6文档: https://tomcat.apache.org/tomcat-6.0-doc/config/context.html上下文的“属性”部分中,路径属性的文档指定:

  

只有在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 的内容并将其粘贴到&lt; Host&gt; 元素中 server.xml ,确保路径 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>

答案 1 :(得分:0)

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