簡體   English   中英

在tomcat中部署后無法訪問spring boot應用程序

[英]Cannot access spring boot application after deployment in tomcat

我使用Spring啟動創建了一個REST API。 我使用gradle作為我的構建工具。 我已經使用嵌入式容器測試了應用程序,它運行正常。 我可以在localhost:8080/foo/bar訪問我的應用程序。

現在我已將它部署到tomcat而沒有任何錯誤。

Mar 17, 2016 1:58:47 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive /usr/local/apache-tomcat-7.0.65/webapps/foo.war
Mar 17, 2016 1:58:48 PM org.apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Mar 17, 2016 1:58:48 PM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deployment of web application archive /usr/local/apache-tomcat-7.0.65/webapps/foo.war has finished in 623 ms

但我現在無法訪問localhost:8080/foo/bar的應用程序。 我可以看到tomcat在localhost:8080運行

這是build.gradle文件。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.3.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'spring-boot'
apply plugin: 'war'

war {
    baseName = 'foo'
}

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

configurations{
    providedRuntime
}

dependencies {
   compile 'org.springframework.boot:spring-boot-starter-web'
    providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
     compile 'com.google.code.gson:gson:2.6.2'
     compile 'org.springframework:spring-webmvc:4.2.5.RELEASE'
     compile 'org.json:json:20151123'

     providedRuntime 'javax.ws.rs:javax.ws.rs-api:2.0.1'
     providedRuntime 'javax.servlet:javax.servlet-api:3.1.0'
     providedRuntime 'javax.servlet:jstl:1.2'

     testCompile("junit:junit")
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.11'
}

我有一個帶有以下代碼的application.properties文件

server.context-path=/foo

我在控制器中的請求映射設置為

    @CrossOrigin
    @RequestMapping("/bar")
    public String bar(){
       // Code
    }

我試過這篇文章中提到的內容 ,但這也行不通。

@SpringBootApplication
public class FooApplication {

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

    // Used when deploying to a standalone servlet container
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(FooApplication.class);
    }
}

要部署Spring Boot應用程序,您必須擁有一個擴展org.springframework.boot.context.web.SpringBootServletInitializer的配置類,並覆蓋org.springframework.boot.context.web.SpringBootServletInitializer.configure(SpringApplicationBuilder application)

因此,當應用程序部署在JEE Servlet容器中時,Spring Boot應用程序將被部署並正確提供。

@Configuration
public class AppServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}

Application.classSpringApplication.run(Application.class, args);類相同SpringApplication.run(Application.class, args); 在主要方法

REF: Java EE Application Server怎么樣?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM