2016-10-08 11 views
-1

私はspringデータjpaとhibernate(サービス、エンティティ、リポジトリ、...)を使用するmavenプロジェクトを持っています。 AspectJを使ってすべてがjarファイルにコンパイルされます。WARブートデプロイメントなしでSpring Bootを既存のTomcatで使用する方法

POST/GETメッセージを受信するためにREST APIを追加したかったのです。だから、私はSpring BootとSpring Webを追加して、RequestMappingsとControllerをプロジェクトに追加しました。

問題は、私はではないプロジェクトのmain(String[] args)メソッドを変更するので、Tomcatでビルドを使用するためにSpringブートコンテキストを追加できません。

私のjarファイルが実行されるマシンにインストールされているtomcatを使用できるかどうかは疑問です。

私がStackOverflowで見つけた唯一の方法は、戦争をコンパイルしてTomcatに展開することです。しかし、私は自分のプロジェクト・アーキテクチャーには限界があります。したがって、特定のフォルダに配置する必要があるjarファイルと、main(String[] args)メソッドを変更しないという制限があるという事実は、ちょっと面倒です。だから私は何とか春に既存の風袋を使用し、着信接続を聞くことができますか?または、この種のプロジェクト構造にREST APIを使用する別の方法がありますか?

答えて

0

JARからWARへの移行:

  • 変更のpom.xmlの包装:

<packaging>war</packaging>

  • あなたはまさにそのようにこれらの依存関係を持っていることを確認してください:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>

  • 正確SpringApplication.runが呼び出される同じパスにServletInitializerを作成します。

    package com.example; 
    
    import org.springframework.boot.builder.SpringApplicationBuilder; 
    import org.springframework.boot.web.support.SpringBootServletInitializer; 
    
    public class ServletInitializer extends SpringBootServletInitializer { 
    
        @Override 
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
         return application.sources(DemoApplication.class); 
        } 
    } 
    
  • PS:は私ものpom.xmlに置くことをお勧めします、内部の "" タグ、プロジェクトのコンテキストでは、次のパラメータ:

<finalName>myProject</finalName>

出典: http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging

+0

Tomcatは –

+0

http://stackoverflow.com/a/6647178/4857050を除外すべきです –

1

既存のTomcatインスタンスを使用する場合は、にwarファイルを展開する必要があります。インスタンスは独自のJVMを実行しており、フックするにはServletInitializerを指定する必要があります。

詳細は、Deploying Spring Boot Applications. What about the Java EE Application Server?を参照してください。

しかし、私はたくさんのお金がかかりそのうちのいくつか(あなたはどのように私は 既存 Tomcatのインストールに、または従来のJava EEアプリケーションサーバーにデプロイします」、不思議想像してみてください。)WebSphere、WebLogic、または JBossのように? "簡単!結局のところ、まだ春になっているので、他のほとんどは が必要です。あなたは jarビルドからMavenのwarビルドに移動します:pom.xmlファイルに spring-boot-maven-pluginプラグインの宣言をコメントアウトし、 Mavenパッケージタイプを変更します戦争に。最後に、 アプリケーションにWebエントリポイントを追加します。


あなたが使用されていない依存関係を除外するためにpom.xmlに変更を加えることができ、さらに、この文書をお読みください。

大規模なアプリケーションサーバーのパターとして出荷されているクラスと競合するクラスがあると、問題が発生することがあります。この場合、 関連APIを除外またはオプションとしてビルドツールの機能を使用してください( )。


関連する問題