1

我想使用 Ant 自动构建、部署、启动和停止应用程序服务器。我能够通过 Ant 构建应用程序并将 war 文件复制到 Tomcat webapps 目录中。

在 Internet 上,我发现这篇文章包含更多启动和停止 Tomcat 的代码。由于没有这些我可以成功部署,我想知道它们为什么会在那里。

我的 build.xml 的代码如下。

 <?xml version="1.0"?>
    <project name="Test" default="build-war">
        <property file="build.properties"></property>
        <target name="build-war" depends="clean">
                <war destfile="Test.war" webxml="${web.dir}/WEB-INF/web.xml" >
                    <fileset dir="${web.dir}">
                        <include name="**/*.*"/>
                    </fileset>
                <classes dir="${build.dir}/classes"></classes>
                </war>
                <copy todir="${deploy.path}" preservelastmodified="true">
                        <fileset

 dir=".">
                        <include name="*.war"/>
                    </fileset>
            </copy>
        </target>
    <target name="clean" description="Clean Test war directories">
        <delete>
            <fileset dir="${deploy.path}">
                <include name="Test.war"/>
            </fileset>
        </delete>
    </target>
</project>
4

1 回答 1

0

没有可靠的方法将应用程序(重新)部署到 Web 服务器。应用程序部署失败的原因有很多(线程泄漏、关闭挂钩、访问父类加载器),但最终,没有可靠的方法来判断(复杂)应用程序是否可以成功部署。

这意味着大多数开发人员已经学会使用这个循环:

  1. 部署。Tomcat 应该会自动注意到新文件并重新启动。
  2. 如果出现异常,请尝试重新加载 ( ReloadTask)。这告诉 Tomcat “不管你相信什么,应用程序已经改变了!重新启动它!”
  3. 如果应用程序仍然失败,请停止并重新启动 Tomcat。
  4. 如果失败,停止 Tomcat,删除所有文件,再次部署,部署,再次启动 Tomcat。
  5. 如果失败,请删除 Tomcat 和所有文件,重新安装,...

是的,我曾经有一个脚本可以完成上述所有步骤。:-)

最后,我放弃了部署。我目前的解决方案是编写一个 Java 应用程序,它创建一个嵌入式 Tomcat 或 Jetty 服务器,对其进行配置并启动应用程序。我只有一个类路径。不需要文件复制、部署或任何此类废话。这样,我只有一个进程,容器中只有一个 Web 应用程序,并且我将所有日志都放在一个地方。

于 2013-10-09T08:17:38.163 回答