[英]Spring RESTful Service as a WAR instead of JAR in Tomcat
我正在使用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。
网址404'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实例
bin/startup.sh
启动tomcat webapps
目录 手动检查war文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.