由于对接华为的一个项目,需要将我们的服务放到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相关推荐

  1. 关于IDEA创建的JavaWeb项目无法继承Servlet项目的问题

    <关于IDEA创建的JavaWeb项目无法继承Servlet项目的问题> tomcat下面的Servlet包是需要自己手动导入的.所以才会导致这个问题. 首先我们点击IDEA左上角的Fil ...

  2. idea项目没法继承httpservlet_intelj idea社区版开发web项目

    由于业务调整,最近需要用JAVA来编写业务代码.对于一个没有任何JAVA开发经验的人而言,这可把我给弄傻眼了,不是说语言本身会比C++复杂,而概念是确实多,有开发框架层面的,也有运行时的,如果不是ja ...

  3. 继承项目第13周-项目1-基类中成员的访问限定符和派生类的继承方式

    这段时间笔者几篇文章介绍了改继承项目的文章. 关联文章的地址 每日一道理 风,那么轻柔,带动着小树.小草一起翩翩起舞,当一阵清风飘来,如同母亲的手轻轻抚摸自己的脸庞,我喜欢那种感觉,带有丝丝凉意,让人 ...

  4. 如何使用vs将asp.net core项目添加容器支持并发布docker镜像到私有dockerhub和添加k8s/helm管理...

    这篇文章介绍一下,如何使用VS2017给asp.net core添加容器支持,并发布镜像到私有docker hub,然后用chart管理容器镜像的操作流程. 话不多说,just do it. 新建项目 ...

  5. qt项目在Linux平台上面发布成可执行程序.run

    ​ 简介: qt项目在Linux平台上面发布成可执行程序.run,或是免安装的绿色版本.亦或者安装形式的安装包. 文章目录 简介: 该博文系列: 开发平台环境: 项目在Linux平台发布: 下载/系列 ...

  6. 从购买ECS到SpringCloud项目的自动化部署及发布

    只是列一个核心步骤的架子,非每一步详细操作(主要用于面试) 项目结构 1.注册登陆阿里云账号(步骤略) 购买ECS.购买域名 实名认证-创建域名模板-认证备案 2.服务器基础环境搭建(准备三台ECS. ...

  7. SpringCloud项目打包Docker镜像并发布到Harbor仓库

    SpringCloud项目打包Docker镜像并发布到Harbor仓库 1. Docker-compose安装 2. Harbor仓库搭建 3. Docker环境配置 4. 项目配置 1. Docke ...

  8. 项目一 国家电力项目思路总结

    Day01 项目框架(SSH) 1.项目介绍 2.项目框架(SSH) 第一步:创建数据库 第二步:创建项目(导入jar包SSH) 第三步:持久层 (1)在cn.itheima.domain中创建Ele ...

  9. 解决方案和项目的区别_AI 项目落地应用指南--5.项目售前与解决方案

    4.产品经理的工作挑战 <-- | --> 6.产品/项目启动 本系列文章原稿发布于Github,感谢Star,欢迎Fork与PR.GitBook 对Markdown的渲染效果更好,有更好 ...

最新文章

  1. Hadoop家族学习路线图--转载
  2. [Python人工智能] 二十一.Word2Vec+CNN中文文本分类详解及与机器学习(RF\DTC\SVM\KNN\NB\LR)分类对比
  3. 理解JavaScript里this关键字
  4. iOS 缓存的获取计算与清除归零
  5. 1.13《推荐系统实践》笔记(上)
  6. 使用c语言实现数组连接
  7. 【Unity】用2D流体实现在水中添加染料的效果
  8. delphi反编译ded加密解密之反汇编工具
  9. U盘格式化后容量变小
  10. 360权重是什么,360权重怎么查询
  11. JSD-2204-JDBC-SpringBoot-Day11
  12. 水清冷冷:PSCC2019/PSCC2020安装教程和学习技巧(附工具)
  13. STM32 USB应用——VCP
  14. 全球行情_全球股市中心
  15. 压缩文件的后缀html,rar是什么格式
  16. C语言进阶——内联汇编
  17. 【恒指早盘分析】趋势交易——看懂很简单,做到却很难!
  18. 迅捷CAD编辑器:绘制一份漂亮的CAD图纸也很简单
  19. Mac 中文输入法失效(不显示选词框)解决办法
  20. (附源码)spring boot校园二手网站系统 毕业设计 221414

热门文章

  1. [NOI2009]管道取珠
  2. Linux系统故障处理案例(一)【转】
  3. C - How Many Tables - HDU-1213
  4. 在raspbian上配置apache2/subversion/xdebug及mysql远程访问
  5. ExtJs六(ExtJs Mvc首页展示)
  6. 有时间了要研究一下Stack Exchange的开源项目
  7. ASP.NET那点不为人知的事(二)
  8. PAT乙级(1001 害死⼈不偿命的(3n+1)猜想)
  9. go init函数_面试录 Go语言篇 内存模型
  10. java选择安装路径的功能怎么实现_水槽怎么选择,从安装方式,材质功能,江水平给你一次性说清楚...