我正在使用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
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文件夹的内容吗?
答案 0 :(得分:6)
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。
答案 1 :(得分:3)
( OP的答案从问题移到这里)
男孩我觉得自己很蠢..在更改了gradle指令后发现教程还有更多内容..包括非常需要的自动配置,取代/取代了对web.xml的需求
初始化servlet
以前,该应用程序包含public static void main()
方法,spring-boot-gradle-plugin配置为在使用java -jar
命令时运行。
通过将此转换为没有XML文件的WAR文件,您需要向servlet容器发出有关如何启动应用程序的不同信号。
的src /主/ 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用它来代替它)。
答案 2 :(得分:1)
我希望在Spring启动应用程序启动时看到一些INFO输出,所以有些想法是:
尝试常规的tomcat实例
bin/startup.sh
webapps
目录手动检查war文件