博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
把spring-boot项目部署到外部tomcat环境下
阅读量:7228 次
发布时间:2019-06-29

本文共 5147 字,大约阅读时间需要 17 分钟。

hot3.png

想要把spring-boot项目按照平常的web项目一样发布到tomcat容器下需要进行下列几个步骤:

一、修改打包形式

pom.xml里设置

war

二、移除嵌入式tomcat插件

pom.xml里找到spring-boot-starter-web依赖节点,在其中进行如下修改:

org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-tomcat

三、添加本地调试Tomcat

为了本地调试方便,在pom.xml文件中,dependencies下面添加

org.springframework.boot
spring-boot-starter-tomcat
provided

四、修改启动类,并重写初始化方法

我们平常用main方法启动的方式,都有一个Application的启动类,代码如下:

@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}

我们需要类似于web.xml的配置方式来启动spring上下文,在Application类的同级添加一个SpringBootStartApplication类,其代码如下:

/** * @author weixiang.wu *  * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法 */@SpringBootApplicationpublic class ImApplication  extends SpringBootServletInitializer {    public static void main(String[] args) {        SpringApplication.run(ImApplication.class, args);    }    @Override    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {        // 注意这里要指向原先用main方法执行的Application启动类        return builder.sources(ImApplication.class);    }}

 

注意:如果出现以下错误,请尝试更换Tomcat版本

严重: Exception invoking method createStandardContextjavax.management.RuntimeOperationsException: Exception invoking method manageApp	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:309)	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)	at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:619)	at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:566)	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)	at java.lang.reflect.Method.invoke(Method.java:498)	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)	at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)	at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)	at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)	at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)	at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)	at java.lang.reflect.Method.invoke(Method.java:498)	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:361)	at sun.rmi.transport.Transport$1.run(Transport.java:200)	at sun.rmi.transport.Transport$1.run(Transport.java:197)	at java.security.AccessController.doPrivileged(Native Method)	at sun.rmi.transport.Transport.serviceCall(Transport.java:196)	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)	at java.security.AccessController.doPrivileged(Native Method)	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)	at java.lang.Thread.run(Thread.java:748)Caused by: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1021)	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:993)	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)	at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1900)	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)	at java.lang.reflect.Method.invoke(Method.java:498)	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:301)	... 33 more

 

转载于:https://my.oschina.net/wuweixiang/blog/2243757

你可能感兴趣的文章
Netty源码分析(六):SelectedSelectionKeySetSelector
查看>>
forEach,for...of,map与asycn/await
查看>>
springboot 2 Hikari 多数据源配置问题(dataSourceClassName or jdbcUrl is required)
查看>>
Golang数据库编程之GORM模型定义与数据库迁移
查看>>
Oracle redo解析之-4、rowid的计算
查看>>
Easy Scheduler 1.0.3 发布,分布式工作流任务调度系统
查看>>
java 颠倒整数
查看>>
Python入门教程100天:Day05-练习总结
查看>>
环境搭建,8种基本类型,Static,package和import,log4j
查看>>
即将到来的 Debian 10 Buster 发布版的新特点
查看>>
iOS 头部视图下拉变大
查看>>
Disruptor并发框架
查看>>
react-hooks 实现简单的评论list
查看>>
【多图警告】学会JavaScript测试你就是同行中最亮的仔(妹)
查看>>
19-04-25
查看>>
一个JAVA程序员成长之路分享
查看>>
30K iOS程序员的简述:如何快速进阶成为高级开发人员
查看>>
Go 夜读 - 每周四晚上 Go 源码阅读技术分享
查看>>
tranform知多少
查看>>
Android电量优化
查看>>