スプリングブートWebアプリケーションを作成しましたが、TomcatにスプリングブートWebアプリケーションWARファイルをデプロイできず、Javaアプリケーションとして実行できます。 TomcatでスプリングブートアプリケーションをWebサービスとして実行する方法。私は次のコードを使用しています。 Tomcat plzで実行できる場合は、web.xmlを使用せずにweb.xmlを使用して注釈を使用してください。
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
休憩コントローラーの次のコード
@RestController
public class HelloWorld{
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public ResponseEntity<String> get() {
return new ResponseEntity<String>("Hello World", HttpStatus.OK);
}
}
私が使用しているPom.xmlに従って
<groupId>org.springframework</groupId>
<artifactId>web-service</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.RELEASE</version>
</parent>
<dependencies>
<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>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
</dependency>
</dependencies>
<properties>
<Java.version>1.6</Java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
<packaging>war</packaging>
Spring Boot
アプリをwar
ファイルとして展開する方法に関する2つの優れたドキュメントを次に示します。
この春のブートに従うことができます howto-traditional-deployment documentation-
このドキュメントによる手順-
SpringBootServletInitializer
を拡張するには、アプリケーションのメインクラスを更新します。
次のステップでは、ビルド構成を更新して、プロジェクトがjarファイルではなくwarファイルを生成するようにします。 <packaging>war</packaging>
埋め込みサーブレットコンテナの依存関係を提供されているものとしてマークします。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-Tomcat</artifactId>
<scope>provided</scope>
</dependency>
そしてもう一つの方法-
これを参照してください spring io documentation これは、アプリケーションサーバーにスプリングブートアプリを展開する方法の概要を示しています。
手順-
jar
パッケージをwar
に変更します。
spring-boot-maven-plugin
のpom.xml
プラグインの宣言をコメントアウトします
SpringBootServletInitializer
を拡張してconfigure
メソッドをオーバーライドすることにより、アプリケーションにWebエントリポイントを追加します
spring-boot-starter-Tomcat dependency
を削除し、spring-boot-starter-web
依存関係を変更します
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-Tomcat</artifactId> </exclusion> </exclusions> </dependency>
pom.xml
で、spring-beans
およびspring-webmvc
依存関係を削除します。 spring-boot-starter-web
依存関係には、これらの依存関係が含まれます。
Springブートは、Tomcatサーバーをサポートするservlet 3.x
(without web.xml)で従来のwarファイルとしてアプリケーションをデプロイするオプションを提供します。これについては spring boot documentation を参照してください。ここで必要なことを簡単に説明します。
ステップ1:パッケージをwarに変更するためにpom.xml
を変更します:(すでに行ったこと)
<packaging>war</packaging>
ステップ2:依存関係を変更します
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-Tomcat</artifactId>
</dependency>
に
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-Tomcat</artifactId>
<scope>provided</scope>
</dependency>
ステップ:pom.xml
タグの下の<build>
で、war名を追加する(バージョン名にwar名を追加する必要がない場合)。
<build>
<finalName>web-service</finalName>
.....
ステップ4:mavenビルドを実行してwarを作成します:clean install
ステップ5:生成されたwarファイルweb-service.war
をTomcatにデプロイし、ブラウザーでURLを要求しますhttp://<Tomcat ip>:<Tomcat port>/web-service/hello
Hello World
を取得する必要があります。
注:また、@ ALi Dehghaniが言ったように、冗長な依存関係を削除することもできます。
spring-boot-starter-Tomcat
依存関係を次のようにprovided
としてマークします。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-Tomcat</artifactId>
<scope>provided</scope>
</dependency>
注1:pom.xml
から冗長な依存関係を削除します:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
それらはspring bootスターターパッケージの一部です
注2: jarをwarにしない
私はこの問題に直面しました。上記の多くは良いアドバイスです。私の問題は、最初にPivotal TCサーバーに展開することでした。
POMのパッケージをWARにします。
<packaging>war</packaging>
Pomに依存関係を追加します
<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>
Main()を保持するためにApplicationクラスを使用しました。 MainにはEntityManager
などを挿入できるように構成コードがありました。このEntityManager
は、永続情報のためにApplicationContext
およびpersistence.xml
ファイルからの情報を使用しました。 SpringBootでは正常に動作しましたが、Tomcatでは正常に動作しませんでした。実際、TomcatではMain()
は呼び出されません。 ApplicationクラスはSpringBootServletInitializer
を拡張します。
次のメソッドがApplicationクラスに追加されます。
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
Application obj = new Application();
@SuppressWarnings("resource")
ConfigurableApplicationContext applicationContext =
new ClassPathXmlApplicationContext("META-INF/spring/applicationContext.xml");
applicationContext.registerShutdownHook();
applicationContext.getBeanFactory().autowireBeanProperties(
obj, AutowireCapableBeanFactory.AUTOWIRE_NO, false);
return application.sources(Application.class);
}
最後の行のみが必要です-他のコードは以前にmain()
に保持され、EntityManager
のインジェクションを取得するためにここに移動されました。
必要な注釈は次のとおりです。
@EnableAutoConfiguration
@ComponentScan
//@SpringBootApplication will consist of both of these and @Configuration
一部のURLでは、ルートコンテキストの変更が必要になる場合があります
<artifactId>contextname</artifactId>.
役立つことを願っています
スプリングブートjarをスプリングブートwarに変換するプロセスは、次のドキュメントに記載されています。 http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins- maven-packaging 要するに、スタータークラスを例のように設定し、.pomファイルでパッケージをjarからwarに切り替えます。さらに、spring-boot-starter-Tomcat依存関係を提供に設定する必要があります。繰り返しになりますが、プロセスは上記のリンクの完全な形式で文書化されています。このテーマの詳細については、 https://spring.io/guides/gs/convert-jar-to-で入手できるspring ioガイド「Spring Boot JARアプリケーションをWARに変換する」を参照してください。 war / さらなる支援が必要な場合は、お知らせください。お手伝いさせていただきます。