2016-04-18 19 views
0

私は単純なガイドに従い、ローカルのspring-bootベースのWebアプリケーションを埋め込みTomcatを使って作成しました。次のステップでは、リモートのLinux Tomcatサーバーに展開しようとしています。私は最初にこれらのステップを踏んだ:tomcatにspring-boot appを設定する

(1)アプリケーションのメインクラスを更新してSpringBootServletInitializerに更新する。 SpringBootApplicationは、プロジェクトがwarファイルではなく、jarファイルを生成するように(2)ビルド構成を更新し

public class WebInitializer extends SpringBootServletInitializer { 
@Override 
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
    return application.sources(SpringBootWebApplication.class); 
}  
} 

@SpringBootApplication 
public class SpringBootWebApplication { 
public static void main(String[] args) { 
    SpringApplication.run(SpringBootWebApplication.class, args); 
} 
} 

@Controller 
public class IndexController { 
    @RequestMapping("/") 
    String index(){ 
     return "index"; 
    } 
} 

私の前のメインクラスです。

<packaging>war</packaging> 

(3)提供されているように、埋め込みサーブレットコンテナの依存関係をマークします。唯一spring-boot-starter-webは、私はちょうど1

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

を追加する前に、私は私が私を取得する(4)私はまた、MavenのクリーンとMavenインストールを実行した後application.properties

server.context-path = /springbootdemo 

でアプリのパスを追加して、この依存関係を持っていませんspring-boot-web-0.0.1-SNAPSHOT.warして、リモートサーバにTomcatのWebアプリケーションにそれを置くが、私はそれらの両方に404を取得しています:

http://host:port/springbootdemo 
http://host:port/spring-boot-web 
http://host:port/spring-boot-web/springbootdemo 

権利がどうあるべきかここに私のアプリへの道?ローカルで実行している場合、アプリケーション名なしでhttp://localhost:8080/で実行されています。サーバーcatalina.outがログを見ると、例外もサーバーも起動しません。

答えて

1

server.context-pathは、warファイルを外部コンテナにデプロイするときに効果がありません。

Tomcatは、アプリケーションのコンテキストパスに、warの全体名から接尾辞.warを引いたものを使用します。 spring-boot-web-0.0.1-SNAPSHOT.warをTomcatのwebappsディレクトリにコピーしたと仮定すると、あなたのアプリはhttp://localhost:8080/spring-boot-web-0.0.1-SNAPSHOTで利用可能になります。

+0

ありがとうございます!それは私が常に持っている大きな疑いです:)今私は理解しています。 – feichangh

-1

私の答えはhereです。

答えには、Tomcatにビルドしてデプロイできるデモプロジェクトへのリンクも含まれています。

関連する問題