だから私は春に初めてです-だから、私は春のブートを試してみよう
Mavenを使用して構築しています-ビューリクエストを設定します。「App」として実行すると、Tomcat自体が起動し、デフォルトの8080ポートにサービスがあるため、localhost:8080/service
を呼び出すとすべて良い。
しかし、サーバーに展開するためにWARとしてパッケージ化しようとすると動作しません
だから私は基本に戻ってローカルにTomcatサーバーに展開し、何が起こるか見てみようと思った
最初は何も起こりませんでした-404-少しグーグルでやったので、このようなWebエントリポイントを含める必要があります-これが私のメインクラスです
@ComponentScan
@EnableAutoConfiguration
public class App extends SpringBootServletInitializer
{
public static void main( String[] args ) {
SpringApplication.run(App.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(appClass);
}
private static Class<App> appClass = App.class;
}
だからそれはうまくいったようで、コンソールで赤いカタリナの起動テキストを見ることができ、それからSpringブートが起動するのを見ました(以前は見ていませんでした)
ただし、サービスlocalhost:8080/service
を呼び出そうとすると、404が表示されます
「アプリ」として実行すると、おもしろい
私がしなければならない明白な何かがありますか?私はちょうど戦争を作成する
私はWARを解凍し、うまく見えました-WEB-INFと依存関係のセットなどがあります.
誰かがスプリングブートアプリをWARとして展開するときに同様の問題を抱えていたので、どんな助けでもいいでしょうか?
***更新****
これで、ローカルのTomcat 7サーバーに正しくデプロイするための戦争を取得できますが、外部でホストされているTomcatコンテナーにデプロイしようとすると、
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.Java:175)
at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5262)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
... 15 more
Jul 14, 2014 1:49:01 PM org.Apache.catalina.startup.HostConfig deployDirectory
SEVERE: Error deploying web application directory /usr/local/shared/Tomcat/thecookpot/webapps/cookpot
Java.lang.IllegalStateException: ContainerBase.addChild: start: org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/cookpot]]
at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:898)
at org.Apache.catalina.core.ContainerBase.access$000(ContainerBase.Java:130)
at org.Apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.Java:153)
at org.Apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.Java:142)
at Java.security.AccessController.doPrivileged(Native Method)
at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:869)
at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:615)
at org.Apache.catalina.startup.HostConfig.deployDirectory(HostConfig.Java:1095)
at org.Apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.Java:1617)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:441)
at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
at Java.lang.Thread.run(Thread.Java:619)
Jul 14, 2014 1:49:01 PM org.Apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/shared/Tomcat/thecookpot/webapps/examples
Jul 14, 2014 1:49:01 PM org.Apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/shared/Tomcat/thecookpot/webapps/Host-manager
Jul 14, 2014 1:49:01 PM org.Apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/shared/Tomcat/thecookpot/webapps/CookPot
Jul 14, 2014 1:49:02 PM org.Apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/local/shared/Tomcat/thecookpot/webapps/CookPot/WEB-INF/lib/Tomcat-embed-core-7.0.52.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Jul 14, 2014 1:49:02 PM org.Apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/local/shared/Tomcat/thecookpot/webapps/CookPot/WEB-INF/lib/Tomcat-embed-el-7.0.52.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/el/Expression.class
Jul 14, 2014 1:49:06 PM org.Apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start:
org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/CookPot]]
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:154)
at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:895)
at org.Apache.catalina.core.ContainerBase.access$000(ContainerBase.Java:130)
at org.Apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.Java:153)
at org.Apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.Java:142)
at Java.security.AccessController.doPrivileged(Native Method)
at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:869)
at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:615)
at org.Apache.catalina.startup.HostConfig.deployDirectory(HostConfig.Java:1095)
at org.Apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.Java:1617)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:441)
at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
at Java.lang.Thread.run(Thread.Java:619)
Caused by: Java.security.AccessControlException: access denied (Java.util.PropertyPermission Java.awt.headless write)
at Java.security.AccessControlContext.checkPermission(AccessControlContext.Java:323)
at Java.security.AccessController.checkPermission(AccessController.Java:546)
at Java.lang.SecurityManager.checkPermission(SecurityManager.Java:532)
at Java.lang.System.setProperty(System.Java:727)
at org.springframework.boot.SpringApplication.run(SpringApplication.Java:263)
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.Java:130)
at org.springframework.boot.context.web.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.Java:89)
at org.springframework.boot.context.web.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.Java:51)
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.Java:175)
at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5262)
at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:150)
... 15 more
Jul 14, 2014 1:49:06 PM org.Apache.catalina.startup.HostConfig deployDirectory
SEVERE: Error deploying web application directory /usr/local/shared/Tomcat/thecookpot/webapps/CookPot
Java.lang.IllegalStateException: ContainerBase.addChild: start: org.Apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/CookPot]]
at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:898)
at org.Apache.catalina.core.ContainerBase.access$000(ContainerBase.Java:130)
at org.Apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.Java:153)
at org.Apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.Java:142)
at Java.security.AccessController.doPrivileged(Native Method)
at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:869)
at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:615)
at org.Apache.catalina.startup.HostConfig.deployDirectory(HostConfig.Java:1095)
at org.Apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.Java:1617)
at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:441)
at Java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.Java:303)
at Java.util.concurrent.FutureTask.run(FutureTask.Java:138)
at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
at Java.lang.Thread.run(Thread.Java:619)
Jul 14, 2014 1:49:06 PM org.Apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/shared/Tomcat/thecookpot/webapps/ROOT
Jul 14, 2014 1:49:06 PM org.Apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/shared/Tomcat/thecookpot/webapps/manager
Jul 14, 2014 1:49:06 PM org.Apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/shared/Tomcat/thecookpot/webapps/docs
Jul 14, 2014 1:49:06 PM org.Apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory /usr/local/shared/Tomcat/thecookpot/webapps/Cookpot
Jul 14, 2014 1:49:06 PM org.Apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/local/shared/Tomcat/thecookpot/webapps/Cookpot/WEB-INF/lib/Tomcat-embed-core-7.0.52.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
Jul 14, 2014 1:49:06 PM org.Apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(/usr/local/shared/Tomcat/thecookpot/webapps/Cookpot/WEB-INF/lib/Tomcat-embed-el-7.0.52.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/el/Expression.class
Jul 14, 2014 1:49:09 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-bio-6350"]
Jul 14, 2014 1:49:09 PM org.Apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-bio-4350"]
Jul 14, 2014 1:49:09 PM org.Apache.catalina.startup.Catalina start
INFO: Server startup in 17529 ms
Spring Bootリファレンスドキュメントの章 実行可能jarおよびwarファイルのパッケージ化
実行可能かつ外部コンテナにデプロイ可能なwarファイルをビルドするには、埋め込みコンテナの依存関係を「提供済み」としてマークする必要があります。例:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<!-- ... -->
<packaging>war</packaging>
<!-- ... -->
<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>
<scope>provided</scope>
</dependency>
<!-- ... -->
</dependencies>
</project>
以下のコードは、Tomcatに依存せずにTomcat8展開で正常に機能しました。
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
public class ManufacturingRegionApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
new SpringApplicationBuilder(ManufacturingRegionApplication.class).application().run(args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) {
return applicationBuilder.sources(application);
}
private static Class<ManufacturingRegionApplication> application = ManufacturingRegionApplication.class;
}
以下の依存関係は必要ありません。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-Tomcat</artifactId>
<scope>provided</scope>
</dependency>
@RestController
@RequestMapping(value = "/manufacturing-region-service")
public class ManufacturingRegionService {
@Resource
private ManufacturingRegionDao manufacturingRegionDao;
@ResponseBody
@Transactional(readOnly = true)
@RequestMapping(value = "/region-codes/{abbr}", method = GET, produces = "application/json")
http:// localhost:8080/manufacturing-region-api/manufacturing-region-service/region-codes/ABBRVALUE
Spring Bootを選択する場合、WARを生成する必要はありません。 ルートページ から:
Spring Boot makes it easy to create stand-alone [...]
Applications that can you can "just run".
Embed Tomcat or Jetty directly (no need to deploy WAR files)
編集:だから、目的が「Spring Bootを試す」ことなら、WARファイルを生成しないことをお勧めします。
本当にWARファイルを作成する必要がある場合(SpringBootに対してビルドされたコードを保持し、任意の標準サーブレットコンテナで実行できるファイルを作成する...)、ドキュメントを読む必要があります Converting a Spring Boot JAR Application to WAR 。
ビルドプロセスにspring-boot-maven-pluginを含めましたか?このステップについては説明しませんでした...