idea项目没法继承httpservlet_SpringBoot项目发布为war
由于对接华为的一个项目,需要将我们的服务放到tomcat中以war包方式发布,有了这两天的工作。
本地测试tomcat 使用的版本:8.5.58,下载地址
https://tomcat.apache.org/download-80.cgi
项目发布war包:
1、修改pom:
修改打包方式:
war
让内置Springboot内置的tomcat失效:
org.springframework.boot spring-boot-starter-tomcat provided
添加servlet-api的依赖
org.apache.tomcat tomcat-servlet-api 8.5.58 provided
添加failOnMissingWebXml配置,不用生成一个无用的Web.xml 文件
org.apache.maven.plugins maven-war-plugin false
修改启动类,让启动类继承SpringBootServletInitializer 并重写configure 方法
@SpringBootApplicationpublic class BsApplication extends SpringBootServletInitializer{/*** 入口方法* @param args*/ public static void main(String[] args) { SpringApplication.run(BsApplication.class, args); } //增加的方法 @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){ return builder.sources(BsApplication.class); }}
将项目打成war包,将target目录下的war文件复制到tomcat的webapp中,运行tomcat。在window上部署:
没有问题的话,在http://localhost:8080/manager页面可以看到,此时就可以启动ui工程来连接服务了。
部署中遇到的问题
控制台输出错误太简洁不好定位
Tomcat启动报错:一个或多个筛选器启动失败。由于之前的错误,Context[]启动失败
在项目的WEB-INFO/classes 目录下添加 logging.properity 可以在logs中的 error-debug.log里面看到详细的报错信息。
handlers = org.apache.juli.FileHandler, java.util.logging.ConsoleHandlerorg.apache.juli.FileHandler.level = FINE org.apache.juli.FileHandler.directory = ${catalina.base}/logs org.apache.juli.FileHandler.prefix = error-debug.java.util.logging.ConsoleHandler.level = FINE java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
问题1:
Failed to execute goal com.github.wvengen:proguard-maven-plugin:2.3.1:proguard (default) on project ****-server: Obfuscation failed (result=1) -> [Help 1]
有两种方法:
一、使用命令 mvn clean install -Dproguard.skip=true 打包,该方法治标不治本。
二、修改
<injar>${project.build.finalName}.jarinjar>
为
<injar>${project.build.finalName}/WEB-INF/classes/injar>
(原来打包输出为jar包,现在打包输出为war)
问题2:
09-Oct-2020 15:34:55.265 严重 [http-nio-8080-exec-14] org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常 javax.naming.NamingException: 无法创建资源实例 at org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:98) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) at org.apache.naming.NamingContext.lookup(NamingContext.java:839) at org.apache.naming.NamingContext.lookup(NamingContext.java:173) at org.apache.catalina.core.DefaultInstanceManager.lookupFieldResource(DefaultInstanceManager.java:586) at org.apache.catalina.core.DefaultInstanceManager.processAnnotations(DefaultInstanceManager.java:486) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:174) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:151) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:106) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4538) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1389) at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:697) at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:218) at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:211) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:668) at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:348) at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:52) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1626) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)09-Oct-2020 15:34:55.323 严重 [http-nio-8080-exec-14] org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常 javax.naming.NamingException: 无法创建资源实例 at org.apache.naming.factory.FactoryBase.getObjectInstance(FactoryBase.java:98) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) at org.apache.naming.NamingContext.lookup(NamingContext.java:839) at org.apache.naming.NamingContext.lookup(NamingContext.java:173) at org.apache.catalina.core.DefaultInstanceManager.lookupFieldResource(DefaultInstanceManager.java:586) at org.apache.catalina.core.DefaultInstanceManager.processAnnotations(DefaultInstanceManager.java:486) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:174) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:166) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:109) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4538) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1389) at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:697) at org.apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.java:218) at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:211) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:668) at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:348) at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:52) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:818) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1626) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)
Fix:定位到代码的一个Filter类中注解使用不当。改改就可以了,得兼容两种情况,一个是支持华为的war包,一个是其他项目中的jar,代码需要考虑兼容性。
idea项目没法继承httpservlet_SpringBoot项目发布为war相关推荐
- 关于IDEA创建的JavaWeb项目无法继承Servlet项目的问题
<关于IDEA创建的JavaWeb项目无法继承Servlet项目的问题> tomcat下面的Servlet包是需要自己手动导入的.所以才会导致这个问题. 首先我们点击IDEA左上角的Fil ...
- idea项目没法继承httpservlet_intelj idea社区版开发web项目
由于业务调整,最近需要用JAVA来编写业务代码.对于一个没有任何JAVA开发经验的人而言,这可把我给弄傻眼了,不是说语言本身会比C++复杂,而概念是确实多,有开发框架层面的,也有运行时的,如果不是ja ...
- 继承项目第13周-项目1-基类中成员的访问限定符和派生类的继承方式
这段时间笔者几篇文章介绍了改继承项目的文章. 关联文章的地址 每日一道理 风,那么轻柔,带动着小树.小草一起翩翩起舞,当一阵清风飘来,如同母亲的手轻轻抚摸自己的脸庞,我喜欢那种感觉,带有丝丝凉意,让人 ...
- 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理...
这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 ...
- qt项目在Linux平台上面发布成可执行程序.run
简介: qt项目在Linux平台上面发布成可执行程序.run,或是免安装的绿色版本.亦或者安装形式的安装包. 文章目录 简介: 该博文系列: 开发平台环境: 项目在Linux平台发布: 下载/系列 ...
- 从购买ECS到SpringCloud项目的自动化部署及发布
只是列一个核心步骤的架子,非每一步详细操作(主要用于面试) 项目结构 1.注册登陆阿里云账号(步骤略) 购买ECS.购买域名 实名认证-创建域名模板-认证备案 2.服务器基础环境搭建(准备三台ECS. ...
- SpringCloud项目打包Docker镜像并发布到Harbor仓库
SpringCloud项目打包Docker镜像并发布到Harbor仓库 1. Docker-compose安装 2. Harbor仓库搭建 3. Docker环境配置 4. 项目配置 1. Docke ...
- 项目一 国家电力项目思路总结
Day01 项目框架(SSH) 1.项目介绍 2.项目框架(SSH) 第一步:创建数据库 第二步:创建项目(导入jar包SSH) 第三步:持久层 (1)在cn.itheima.domain中创建Ele ...
- 解决方案和项目的区别_AI 项目落地应用指南--5.项目售前与解决方案
4.产品经理的工作挑战 <-- | --> 6.产品/项目启动 本系列文章原稿发布于Github,感谢Star,欢迎Fork与PR.GitBook 对Markdown的渲染效果更好,有更好 ...
最新文章
- Hadoop家族学习路线图--转载
- [Python人工智能] 二十一.Word2Vec+CNN中文文本分类详解及与机器学习(RF\DTC\SVM\KNN\NB\LR)分类对比
- 理解JavaScript里this关键字
- iOS 缓存的获取计算与清除归零
- 1.13《推荐系统实践》笔记(上)
- 使用c语言实现数组连接
- 【Unity】用2D流体实现在水中添加染料的效果
- delphi反编译ded加密解密之反汇编工具
- U盘格式化后容量变小
- 360权重是什么,360权重怎么查询
- JSD-2204-JDBC-SpringBoot-Day11
- 水清冷冷:PSCC2019/PSCC2020安装教程和学习技巧(附工具)
- STM32 USB应用——VCP
- 全球行情_全球股市中心
- 压缩文件的后缀html,rar是什么格式
- C语言进阶——内联汇编
- 【恒指早盘分析】趋势交易——看懂很简单,做到却很难!
- 迅捷CAD编辑器:绘制一份漂亮的CAD图纸也很简单
- Mac 中文输入法失效(不显示选词框)解决办法
- (附源码)spring boot校园二手网站系统 毕业设计 221414
热门文章
- [NOI2009]管道取珠
- Linux系统故障处理案例(一)【转】
- C - How Many Tables - HDU-1213
- 在raspbian上配置apache2/subversion/xdebug及mysql远程访问
- ExtJs六(ExtJs Mvc首页展示)
- 有时间了要研究一下Stack Exchange的开源项目
- ASP.NET那点不为人知的事(二)
- PAT乙级(1001 害死⼈不偿命的(3n+1)猜想)
- go init函数_面试录 Go语言篇 内存模型
- java选择安装路径的功能怎么实现_水槽怎么选择,从安装方式,材质功能,江水平给你一次性说清楚...