私は両方の場合に完全にスプリングブートを構成できます。ここでの質問は、どちらがより堅牢で、より推奨されるかです。これは、スプリングブートのドキュメントで、運用環境に展開するための推奨される方法が見つからなかったためです。 、埋め込みコンテナの使用に関する私の懸念は次のとおりです。
一般的な質問は、jarファイルを使用して、それをJava -jar jarname.jarとして本番環境で実行するか、パッケージを変更して、提供されているようにTomcatをwarに設定し、生成されたwarを空のTomcat。
あなたが私を助けてくれることを願っています。
---編集---
多くの場合、答えは異なりますが、これは通常のWebアプリケーションまたはREST Webサービスの場合です。
jarパッケージは完全に本番環境に適しており、warにフォールバックする必要があります本当に必要な場合のみ-これは、展開環境を制御できない場合によくあります(大企業ではよくあることです)。
Spring Bootリファレンスには、Spring BootベースのアプリケーションをUnix/Linux/Windowsサービスとして設定することに関する章があります Spring Bootアプリケーションのインストール 。
あなたの懸念について:
おそらく将来的には、同じコンテナでさらに多くのアプリケーションが必要になるでしょう。
埋め込みコンテナーを使用する場合、同じマシンでさらに多くのアプリケーションを実行する必要がある場合は、2つのアプリケーションを個別に起動し、それぞれを異なるポートで実行すると、2つのコンテナーが実行されることになります。
約1か月前に、あなたのような質問がありました。私の結論を共有しましょう:
1)JAR:
2)戦争
したがって、私の実務では、jarよりもwarアプリを使用して管理および再構成する方が簡単です。
サーバーのことはよくわかりませんが、私のおすすめは
Monolithicアプリケーションを使用している場合は、外部Tomcatでwarを使用することをお勧めします。
Micro Serviceアプリケーションに使用している場合は、異なるポートの組み込みTomcatを使用します。また、各マイクロサービスアプリケーションは互いに独立しています。
本番環境で「war」ファイルを使用するもう1つの理由。 SpringbootはJettyがスローしたエラーをマスクしましたが、JettyにデプロイされたWARはそれを正しくキャッチしました(以下の問題はまだレビュー中です)
https://github.com/spring-projects/spring-boot/issues/8917#issuecomment-294673487
Windowsサービスについてはあまり知りませんが、Linuxでは、jarの実行をRC-Scriptsに追加できます(したがって、アプリケーションを特定の実行レベルで開始できます)。スプリングブートアプリの場合は、jarにシンボリックリンクを作成するだけで、他のサービスと同様に開始/停止などを行うことができます。 サービスとしてのスプリングブートアプリケーション
マシンまたはJVMを再起動しますか?シャットダウンメカニズムはSpring Bootに組み込まれており、それをアクティブ化するだけです(そして、誰もそれを実行できないようにセキュリティメカニズムを有効にする必要があります)。次を参照してください: Spring Bootアプリケーションをシャットダウンする方法正しい方法ですか?
Spring-Bootはマイクロサービスを有効にする-したがって、アイデアは、各webapp/microserviceに対して1つの組み込みwebapp-containerを持つことです。これにより、ダウンしているサービスが1つだけの場合にすべてのサービスが失われるリスクが軽減されます。
はい。再起動するたびにcatalina.sh|bat start
を実行する必要があります。または、適切な起動スクリプトを追加します(1を参照)。
昔ながらのやり方でやってみたいと思います。 「趣味の問題」の答えにもかかわらず、プロジャーの1つの引数があります。唯一の依存関係はJVMです!残り(web-app-container、db-drivers、その他のライブラリ)はすべて、提供するパッケージの一部です。そして、あなたが次のリリースのためにコンテナを変更することに決めたならば、そうするでしょう。