1

Ant を使用して、アプリケーションのビルド、デプロイ、サーバーの起動と停止を自動化したい。Ant を使用してアプリケーションをビルドし、war ファイルを Tomcat の webapps ディレクトリにコピーすることができました。

インターネットで、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 とすべてのファイルを削除し、再インストールしてください。

はい、私は以前、上記のすべてのステップを実行できるスクリプトを持っていました。:-)

結局、導入はあきらめました。私の現在の解決策は、組み込みの Tomcat または Jetty サーバーを作成し、構成してアプリを起動する Java アプリケーションを作成することです。クラスパスは 1 つしかありません。ファイルのコピー、展開、またはそのようなナンセンスは必要ありません。そうすれば、コンテナー内に 1 つのプロセス、1 つの Web アプリのみがあり、すべてのログが 1 か所にまとめられます。

于 2013-10-09T08:17:38.163 に答える