Spring RESTful服务作为WAR而不是Tomcat中的JAR

我正在使用Java Spring创建REST Web服务。 我已成功加载STS,示例详述如下:

“本指南将引导您完成使用Spring创建”hello world“RESTful Web服务的过程。” http://spring.io/guides/gs/rest-service/

然而,该教程只是到目前为止..我想创建一个WAR文件,而不是一个包含servlet的自运行jar,并部署该WAR文件。 然后我找到了本教程,并试图修改第一个教程build.gradle文件。

“将Spring Boot JAR应用程序转换为WAR” http://spring.io/guides/gs/convert-jar-to-war/

它似乎在.war文件中构建得很好..服务在我的TOMCAT实例的管理器中运行..但是一旦我尝试使用该服务,我就得到了404。

url404’d

http://localhost:8080/gs-rest-service-0.1.0/dbgreeting?name=MyName 

我需要修改映射吗?

DataBaseController.java

 @RequestMapping("/dbgreeting") public @ResponseBody DataBaseGreeter dbgreeting( @RequestParam(value="name", required=false, defaultValue="World") String name) { return new DataBaseGreeter(counter.incrementAndGet(),String.format(template, name)); } 

现在我根据事物的混合创建了.war文件……并且担心我可能错过了一些东西。

我发现OSX上的XAMPP不包含webapp /文件夹,这迫使我加载Bitnami的Tomcat堆栈。 人们通常会在此基础上在XAMPP和其他堆栈之间切换吗? 或者我错过了在XAMPP中创建webapp文件夹的内容?

WAR只是一个特殊的JAR。 它需要一个WEB-INF,在这个WEB-INF下你需要一个web.xml来描述你的部署,任何app server dependentXML配置文件,通常还有lib,类和其他的几率。

最简单的方法是使用Maven来创建WAR。 我认为你应该能够简单地将pom.xml中的项目类型从JAR更改为WAR。 您所遵循的教程似乎使用了Gradle,而Gradle又使用Maven,我相信你应该在那里有一个。 除此之外,谷歌有关如何构建WAR的教程。 我不相信Tomcat需要任何特殊的部署描述符,因此您只需要web .xml。

OP的答案从问题转移到这里

男孩,我觉得真的很蠢..发现更改了gradle指令之后教程还有更多内容..包括非常需要的自动配置,取代/取代了对web.xml的需求

初始化servlet

以前,该应用程序包含一个public static void main()方法,spring-boot-gradle-plugin配置为在使用java -jar命令时运行。

通过将其转换为没有XML文件的WAR文件,您需要向servlet容器发出有关如何启动应用程序的不同信号。

的src / main / JAVA /你好/ HelloWebXml.java

 package hello; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.SpringBootServletInitializer; public class HelloWebXml extends SpringBootServletInitializer { @Override protected void configure(SpringApplicationBuilder application) { application.sources(Application.class); } } 

将赞扬第一个答案,但你们都是正确的,因为需要web.xml(或Spring-Boot使用它来替换它)。

我希望在Spring启动应用程序启动时会看到一些INFO输出,所以有些想法是:

尝试一个常规的tomcat实例

  • 下载并解压缩zip分发 。
  • 使用bin/startup.sh启动tomcat
  • 将您的战争复制到webapps目录
  • 检查日志……希望看到弹簧启动的一些证据

手动检查war文件

  • 解压缩你的war文件
  • 期待看到WEB-INF / web.xml