2015-12-21 60 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>