部署在Tomcat

时间:2016-01-18 18:04:16

标签: java spring tomcat spring-boot

我使用Spring Boot为AngularJS应用程序开发了一个REST API。我正在运行Java 8并在Ubuntu上部署到Tomcat 8,运行Oracle的JDK8。当我在Eclipse中运行时,或者如果我将应用程序作为JAR运行时,一切正常。如果我点击localhost:9000 / api我会得到如下输出:

{
    "expenses" : {
        "href" : "http://localhost:9000/api/expenses"
    },
    "expenseTypess" : {
        "href" : "http://localhost:9000/api/expensetypes"
    },
    ....
}

如果我将应用程序打包为WAR并将其部署在/ myapplication的Tomcat上,则会在应用程序root之后丢失尾部斜杠。致电192.168.1.170:8080/myapplication/api返回:

{
    "expenses" : {
        "href" : "http://192.168.1.170:8080/myapplicationapi/expenses"
    },
    "expenseTypess" : {
        "href" : "http://192.168.1.170:8080/myapplicationapi/expensetypes"
    },
    ....
}    

...这显然导致一切都爆炸,因为没有任何API链接是正确的。如果我手动调用正确的URI,则返回的资源也会损坏链接。

有没有人见过这个并克服它?

1 个答案:

答案 0 :(得分:1)

嗯,答案很简单。如此简单,我忽略了甚至考虑它。我在application.properties中为API定义了一个基本URI:

spring.data.rest.base-uri=api

更改为:

spring.data.rest.base-uri=/api

解决了问题:/