2015-12-21 81 views
1

我正在使用一個簡單的hello world控制器進行spring引導。我想將其部署到外部tomcat服務器。我注意到web.xml文件丟失了。我期望在web-inf目錄中看到這個文件。當我在外部tomcat服務器上部署了war文件後,我可以看到hello(),這個服務器可以在外部tomcat服務器上運行,但是我想部署我的應用到外部tomcat服務器。世界上可用的服務列表,但我不能使用的Hello World服務 - 我得到的,而不是404錯誤消息Spring引導部署外部tomcat

我使用maven,jdk的1.8的IntelliJ

這是我的pom.xml。

<?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"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>org.springframework</groupId> 
<artifactId>gs-spring-boot</artifactId> 
<version>0.1.0</version> 
<packaging>war</packaging> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.3.1.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> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.maven</groupId> 
     <artifactId>maven-plugin-api</artifactId> 
     <version>3.3.9</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.data</groupId> 
     <artifactId>spring-data-jpa</artifactId> 
     <version>1.9.2.RELEASE</version> 
    </dependency> 

</dependencies> 

<properties> 
    <java.version>1.8</java.version> 
</properties> 


<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.6</version> 
      <configuration> 
       <attachClasses>true</attachClasses> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

</project> 

這是我的應用程序類:

import java.util.Arrays; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.boot.builder.SpringApplicationBuilder; 
import org.springframework.boot.context.web.SpringBootServletInitializer; 
import org.springframework.context.ApplicationContext; 

@SpringBootApplication 
public class Application extends SpringBootServletInitializer { 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { 
     return application.sources(Application.class); 
    } 

    public static void main(String[] args) { 
     ApplicationContext ctx = SpringApplication.run(Application.class, args); 

     System.out.println("Let's inspect the beans provided by Spring Boot:"); 

     String[] beanNames = ctx.getBeanDefinitionNames(); 
     Arrays.sort(beanNames); 
     for (String beanName : beanNames) { 
      System.out.println(beanName); 
     } 
    } 
} 

將hello world app部署到外部tomcat服務的正確方法是什麼?

回答

0

在tomcat上部署時,應該有一個由容器添加的上下文路徑,並且必須作爲URL中的第一個元素路徑。檢查tomcat啓動日誌以獲取上下文路徑並按照指示重試調用服務。

0

如果外部Tomcat上的Spring啓動應用程序部署成功並且沒有錯誤拋出,則不能通過localhost:8080/而是localhost:8080/your-deployed-war-file-name進行訪問。

您可以添加finalNamepom.xml避免增加版本內置戰爭文件名 - Maven : How to avoid version appended to a war file in Maven?

<build> 
    <finalName>${project.artifactId}</finalName> 
</build>