我已经创建了spring Boot web应用程序,但是我无法在tomcat上部署spring boot web应用程序WAR文件,并且我可以将其作为java应用程序运行。如何在tomcat上将spring boot应用程序作为web服务运行。我正在使用以下代码。如果可以在tomcat上运行,请帮助我使用注解,而不使用web.xml,而是使用web.xml。
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
以下代码适用于休息控制器
@RestController
public class HelloWorld{
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public ResponseEntity<String> get() {
return new ResponseEntity<String>("Hello World", HttpStatus.OK);
}
}
在我使用的Pom.xml之后
<groupId>org.springframework</groupId>
<artifactId>web-service</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
</dependency>
</dependencies>
<properties>
<java.version>1.6</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
<packaging>war</packaging>
6条答案
按热度按时间wvt8vs2t1#
这里有两个关于如何将
Spring Boot
应用程序部署为war
文件的文档。您可以按照此Spring Boot howto-traditional-deployment文档-
根据本文档的步骤-
1.更新应用程序的主类以扩展
SpringBootServletInitializer
。1.下一步是更新构建配置,以便项目生成war文件而不是jar文件。
<packaging>war</packaging>
1.将嵌入的Servlet容器依赖关系标记为提供的依赖关系。
还有一个办法
请参阅这个spring io文档,它概述了如何将spring Boot 应用程序部署到应用服务器。
步骤-
1.将
jar
Package 更改为war
。1.在
pom.xml
中注解掉spring-boot-maven-plugin
插件的声明1.通过扩展
SpringBootServletInitializer
并重写configure
方法,将Web入口点添加到应用程序中1.删除
spring-boot-starter-tomcat dependency
并修改spring-boot-starter-web
依赖项以在您的
pom.xml
中,移除spring-beans
和spring-webmvc
相依性。spring-boot-starter-web
相依性将会包含这些相依性。41zrol4v2#
Sping Boot 提供了一个选项,可以将应用程序部署为支持Tomcat服务器的
servlet 3.x
(不带web.xml)中的传统war文件。请参见Spring boot文档。我将在这里简要介绍您需要做的事情。步骤1:修改
pom.xml
以将打包更改为war:(您已经这样做了)步骤2:更改依赖项
至
步骤3:在
<build>
标记下的pom.xml
中修改war名称(如果需要避免使用war名称附加的版本详细信息)。步骤4:运行Maven Build以创建战争:
clean install
步骤5:在tomcat中部署生成的war文件web-service.war
,在浏览器http://<tomcat ip>:<tomcat port>/web-service/hello
中请求url你应该得到
Hello World
。***注意:***您还可以删除多余的依赖项,正如@Ali Dehghani所说。
7lrncoxx3#
将
spring-boot-starter-tomcat
相依性标记为provided
,例如:**注1:**从
pom.xml
中删除冗余依赖项,例如:它们是 * Spring Boot 启动程序包 * 的一部分
**注2:**使jar不警告
qmb5sa224#
将Sping Boot jar转换为Spring Boot war的过程记录在以下位置:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-maven-packaging长话短说,按照示例中的方式设置您的启动类,然后在.pom文件中将打包从jar切换到war。此外,您需要将spring-boot-starter-tomcat依赖项设置为provided。同样,在上面的链接中以完整的形式记录了该过程。有关该主题的更多信息,请参见spring io指南。“将Sping Boot JAR应用程序转换为WAR”,可在https://spring.io/guides/gs/convert-jar-to-war/上找到。如果我能提供任何进一步的帮助,请让我知道,我会帮助您。
o4hqfura5#
我曾经面临过这个问题。上面的很多都是很好的建议。我的问题是最初部署在Pivotal TC服务器上。
1.使 Package 中的pom成为一场战争。
1.将依赖项添加到pom
1.我使用了一个Application类来保存main()。Main有配置代码,这样就可以注入
EntityManager
等。这个EntityManager
使用了来自ApplicationContext
和persistence.xml
文件的信息来获取持久性信息。在SpringBoot下工作正常,但在Tomcat下就不行了。事实上,在Tomcat下Main()
是不被调用的。Application类扩展了SpringBootServletInitializer
。1.将以下方法添加到Application类中:
只有最后一行是必需的-其他代码以前保存在
main()
中,并被移动到这里以使EntityManager
的注入工作。1.所需的注解包括:
1.某些url现在可能需要更改根上下文以包括
希望能有所帮助
eagi6jfj6#
******在局域网的tomcat服务器上部署spring Boot webapp的步骤如下:-****它工作100%请尝试一下,因为它是我自己实现的。**strong text
1.在项目的www.example.com文件中添加server.port = 8080和server.address =(您的PC IP地址)application.properties。请记住:-不要将IP地址放在括号内,此处使用的括号只是为了显示括号内的IP地址。
1.然后制作Sping Boot 应用程序的war文件,您可以在eclipse中制作它,也可以在VS代码中制作它,无论您使用的是什么IDE。
如何在vs代码中生成war文件:-
在maven文件夹打开maven文件夹,你会发现你的项目,并点击文件夹,有一个名为清理的选项,点击清理,它将清理你的项目's文件夹命名为目标,然后再次单击同一项目,在clean下面,您将找到一个名为install的选项,单击它将在您的项目中的src文件夹下新建一个名为target的文件夹,并打开此目标文件夹你会发现有两个war文件一个是简单的,其他是扩展有原始,从这些文件你必须上传war文件以外的原始文件.
1.通过在浏览器中运行tomcat,将war文件上传到tomcat服务器的webapp文件夹中,然后转到tomcat中的管理器应用程序,在那里您可以找到上传war文件的选项。
1.在此之后,关闭您的公共防火墙网络从防火墙和保护在windows安全软件在您的系统从任务栏。
1.转到同一LAN上的另一台计算机,并通过http://IP_address:8080/yourwebsite_url访问应用程序URL
您的网站网址将是相同的,你上传的战争文件在tomcat服务器。