tomcat - 在 Tomcats Server.xml 中使用占位符

标签 tomcat ant


我有一个小问题,看不到解决方案。 我的 tomcat 需要灵活的端口。我想在属性文件中设置一个端口变量,tomcat 读取它并在这个端口上启动服务器。我知道 tomcat 无法读取属性,但他可以读取系统变量/属性。 我用 ant 构建我的项目和 tomcat,这意味着解决方案在于 ant。

server.xml

<Connector
    port="${tomcat.http.port}" maxHttpHeaderSize="8192" ...
</Connector>

build.xml

<exec dir="${basedir}/tomcat/bin" executable="${basedir}/tomcat/bin/catalina.sh" failonerror="true" output="${basedir}/tomcat/logs/testrun.log">
    <arg value="start" />
</exec>

project.properties

tomcat.http.port=42

最佳答案

我做什么,我有一个 server.xml tomcat 文件,其中包含占位符属性:

<Connector port="@http.port@" protocol="HTTP/1.1"
        connectionTimeout="20000" redirectPort="@https.port@" />

然后在我的 ant build.xml 中:

<copy todir="${dir.destination.config.tomcat}" filtering="true">
        <fileset dir="${dir.with.template.config.tomcat}"/>

        <filterset>
            <filter token="http.port" value="${http.port}"/>
            <filter token="https.port" value="${https.port}"/>
            <filter token="admin.port" value="${admin.port}"/>
            <filter token="control.port" value="${control.port}"/>
        </filterset>
    </copy>

然后使用 -Dhttp.port=42 运行您的 ant 构建,或将其放入由 ant 加载的属性文件中。

关于tomcat - 在 Tomcats Server.xml 中使用占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9887086/

相关文章:

android - 项目 "release"中不存在目标 "core"

tomcat - 从不同主机访问 Tomcat Manager App

java - 如何使用 spring boot 和嵌入式 tomcat 禁用 TLSv1.0?

java - Eclipse,如何运行多个ant目标

android - "cordova platform add android"错误

java - Ant Java 任务输出属性

java - JSP 函数输出在错误的位置?为什么?

java - Activiti Explorer - 请求资源不可用

java - 调用 WebService 并遇到 SSL/cert 问题

android - linux 命令 "android": equivalent in Windows?