私はこの問題について尋ねましたが、このケースでは何も見つかりません。私は "Spring Boot WARをTomcatにデプロイする方法"はたくさん見つけましたが、Spring Bootで既存のTomcat WARをラップする方法については何も見つかりませんでした。埋め込まれたtomcatに既存のWARを追加する
私は、既存のコードベースを再構成する必要がないように、春ブーツ「ラッパー」で、既存のWARをラップしようとしています。 This solutionは絶対的な場所で利用可能なWARに依存しているのに対し、SpringブートWARの中では「アプリケーション」WARをパッケージ化しようとしているため動作しません。次に、このようなWARのコンテキストを追加することができます。
Context context = tomcat.addWebapp("myapp", Thread.currentThread().getContextClassLoader().getResource("myapp.war").getPath());
これはほとんど動作しています。私は1つの特定の問題に問題があります。既存のWARファイルをSpringブートプロジェクトにドロップすると、/WEB-INF/classes
の代わりに/WEB-INF/lib-provided
にドロップされます。埋め込みTomcatにこの場所からWARファイルを追加する方法を見つけることができません。 ClassLoaderはWEB-INF/classes
の下にないため、ロードしません。
/WEB-INF/lib-provided
からこのWARをつかんでの巧みな方法(または任意の方法)はありますか?これを実行する必要がある他の誰のために、答えは(そうでなければ、WARの2つのコピーがあなたの春ブーツWARに含まれ得る)maven-dependency-plugin
を使用して、リソースからWARファイルを除外するようにspring-boot-maven-plugin
を設定することです
WARを埋め込みTomcatアプリケーションにして、それを達成するためにSpring Bootを使用しているか、SpringBootを最大限に使用したいですか? Springブートを使用するようにアプリケーションを再構成することなく、Springブートの利点を活用できるかどうかはわかりません。 – qtips
私たちの要点は、既存のアプリケーションを可能な限り小さな変更でSpringブートアプリケーションにすることです。理想的には、既存のアプリケーションには触れません。Springブートシェルでラップし、別のTomcatインスタンスなしで実行可能にするだけです。私はSpring Bootがはるかに多くのことがあると確信していますが、私たちはそれに任されていません。 – user1071914
あなたのケースでSpring Bootを使用する目的は何ですか?あなたの仕事は、Spring Bootを可能な限り早く使い始めることだと思います。私はあなたの目的が他のより簡単な方法で達成できるかどうかを尋ねています。アプリケーションをTomcatスタンドアロンサーバーに組み込むMainクラスを作成します。また、Spring Bootを使い始めるのも非常に簡単です.pomを変更してMainクラスを作成するだけで済む場合もあります。 – qtips