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
- 为什么没有将jaxb适配器注释添加到代理类中
- Gradle子项目未包含在类路径中
- 如何从命令行运行单个gradle任务
- 使用注释@SpringBootApplication进行配置
- 错误:(59,8)错误:无法访问未找到android.support.v4.app.ActivityCompatApi23的ActivityCompatApi23类文件
- Gradle – Groovy和Java类依赖 – 编译
- 在Ubuntu上找不到Java Application主类
- 将sourcesJar任务添加到自定义Gradle插件
- Android Studio Gradle:执行静态Java方法(从ANT迁移到Gradle)