今天正月十五,可怜的我还在这里码字,首先祝大家“猿宵节”快乐!距离我发布的spring cloud初级教程已经有段时间了,这段时间经历了一个春节,加上年后我又有了点事情要做,所以我在初级教程中预告的spring cloud手脚架项目估计要食言了。不过今天冒个泡,就是让大家知道,事情我还在做,什么时间做完,这个对于我来说也是很重要的事情。这次不预告时间,因为我也有许多其他事情要忙。所以在这里跟大家说声对不起了。

集锦一:普通的springboot项目直接部署jar包

因为我的项目中包含了静态资源,以及上传路径,如果直接部署,我没底springboot会给我出什么幺蛾子。当然我也试过了直接部署,启动的时候各种报错,加上传言说生产环境部署springboot会额外加很多东西,并且你不知道它什么时候就会变的很慢。我在云服务器上启动的时候速度奇慢,并且静态资源也出问题,所以我就放弃了,换tomcat独立部署。不过如果你打完jar包后,使用以下命令可以不改配置文件中的端口启动服务。

java -jar ./yourjar.jar --server.port=8080

集锦二:springboot项目不能直接打war包部署

两步可以搞定这个问题,第一个步骤有两种方式,我只选了其中对我来说最方便的方式

  1. 修改pom.xml
		<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。
相当于compile,但是打包阶段做了exclude操作-->
<scope>provided</scope>
</dependency>
  1. 修改启动文件,让application继承SpringBootServletInitializer
public class WebsiteApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(WebsiteApplication.class, args);
}
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(WebsiteApplication.class);
}
}

集锦三:因为tomcat版本问题导致的lombok插件报错:Invalid byte tag in constant pool: 19

我在部署的过程中,除了这个还有log4j-api也报了一个类似的错误,不过好像是Invalid byte tag in constant pool: 18,有人说是要降lo4j-api的版本来解决,而我不想这么做,所以我将tomcat 7升级到了tomcat 8,问题解决。

集锦四:Tomcat 启动的时候总是出现大量如下的警告

警告: Unable to add the resource at [/WEB-INF/lib/springwebmvc-3.0.2.RELEASE.jar] to the cache because there was insufficient free space available after evicting expired cache entries - consider increasing the maximum size of the cache

找到conf/context.xml配置文件,在context里面添加如下配置:

<Resources cachingAllowed="true" cacheMaxSize="100000" />

集锦五:springboot打包war包时pom.xml提示war标签出现错误

因为我们的springboot项目是没有web.xml的,而打包时默认的maven-war-plugin版本太低,导致从jar换到war时,因为没有web.xml文件打包插件就不知道怎么玩了。升级方式如下:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>

集锦六:部署到独立tomcat,springboot项目filter无法启用

具体的问题是@ServletComponentScan失效,前面我修改了启动文件,放到tomcat的时候,启动时走的流程与springboot不一样,所以注解失效了。咋解:

  1. filter该以前怎么写现在照样怎么写
  2. 加入如下文件,并在启动文件上将此配置加入@ComponentScan
@Configuration
public class RegistrationFilterConfig {
@Value("${except.url}")
private String exceptUrls ;
@Bean
public FilterRegistrationBean<UserLoginFilter> regUserLoginFilterBean() {
FilterRegistrationBean<UserLoginFilter> bean = new FilterRegistrationBean<UserLoginFilter>();
bean.setFilter(new UserLoginFilter());
bean.addUrlPatterns("/admin/*", "/user/*" , "/api/*");
bean.setName("userLoginFilter");
bean.addInitParameter("exceptUrls", exceptUrls);
bean.setOrder(1);
return bean;
}
}

集锦七:filter直接使用@Value注解的配置文件为空

上面一个问题,大家看到我的exceptUrls这个参数了吧,这个参数原先是在filter里面的,换了新的注册方式后,就注入不进来了,如何优雅的解决?关键就是在这里

bean.addInitParameter("exceptUrls", exceptUrls);

然后filter里面加入如下代码

	private String exceptUrls ;

	@Override
public void init(FilterConfig filterConfig) throws ServletException {
exceptUrls = filterConfig.getInitParameter("exceptUrls");
}

即可解决filter里面的配置文件注入的问题。

springboot项目部署到独立tomcat的爬坑集锦的更多相关文章

  1. 多个springboot项目部署在同一tomcat上,出现jmx错误

    多个springboot项目部署在同一tomcat上,出现jmx错误 原因:因为jmx某些东西重复,禁用jmx就可以了 endpoints.jmx.unique-names=true

  2. SpringBoot_11_将springboot项目部署到外部tomcat上

    一.前言 二. 三.参考资料 如何将Spring Boot项目打包部署到外部Tomcat 2.SpringBoot 项目如何在tomcat容器中运行

  3. Spring-Boot项目部署到单独tomcat运行

    前言: 本文是对学习SpringBoot过程中的笔记,拿最简单的项目进行部署,大家可以进行类比,文章最后会提供部署前和部署后的github地址,用代码做的笔记,可能会很乱,有兴趣的同学可以参考 正文: ...

  4. SpringBoot项目部署在同一个tomcat容器报错

    在一个Tomcat容器中部署了两个springboot的应用,在启动时发现一直都是第一个启动的项目能启动成功,第二个项目启动报错,错误信息如下: 2018-01-30 15:49:27.810 ERR ...

  5. springboot项目部署云服务器

    Springboot项目部署云服务器 springboot项目部署云服务器还是挺简单的 首先你要有java运行环境,就是jdk的安装,如果还没有装没有参考安装:阿里云ECS建网站(建站)超详细全套完整 ...

  6. springboot项目部署(war包)

    将springboot项目打包成war,并且部署到tomcat.比较麻烦,自己踩的坑也比较多.算了一下,找bug的时间,有两天熬到凌晨2点. 修改pom.xml使得打包成war <groupId ...

  7. 2019-03-26 SpringBoot项目部署遇到跨域问题,记录一下解决历程

    近期SpringBoot项目部署遇到跨域问题,记录一下解决历程. 要严格限制,允许哪些域名访问,在application.properties文件里添加配置,配置名可以自己起: cors.allowe ...

  8. React+SpringBoot项目部署

    静态资源访问配置 https://www.jianshu.com/p/b6e0a0df32ec https://segmentfault.com/q/1010000012240531/a-102000 ...

  9. springboot项目发布到独立的tomcat中运行&打成jar包运行

    springboot的打包方式依赖于插件:(下面插件打出的包与普通的包目录结构有区别) <plugin> <groupId>org.springframework.boot&l ...

随机推荐

  1. kvm虚拟机动态迁移

    相比KVM虚拟机静态迁移中需要拷贝虚拟机虚拟磁盘文件,kvm虚拟机动态迁移无需拷贝虚拟磁盘文件,但是需要迁移到的虚拟主机之间需要有相同的目录结构虚拟机磁盘文件,本文这部分内容通过nfs来实现,当然也可 ...

  2. 4.iptables 网络防火墙

    [1] #如果想要iptables作为网络防火墙,iptables所在主机开启核心转发功能,以便能够转发报文. [2] #使用如下命令查看当前主机是否已经开启了核心转发,0表示为开启,1表示已开启 c ...

  3. “全栈2019”Java第六十六章:抽象类与接口详细对比

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  4. NOI2014起床困难综合症

    Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...

  5. 从哈希结构去理解PHP数组

    php的数组实际上就是hash_table,无论是 数字索引数组array(1, 2, 3) 还是关联数组array(1 => 2, 2=> 4)等等. 一,这里的hash_table有几 ...

  6. 8,Phaser__并发且多阶段任务

    使用场景 考选武状元 10 个 武生 参加考试 ,第一个关 靠耐力, 坚持最久的5个人进入第二关, 第二关考 力气,力气最大的 3个人进入第二关,第三关考兵法,兵法最好的当选武状元

  7. linux校验时间

      一. 基本方法:date -s "2018-09-02 04:23:45"clock -w 把时间写入cmos(一个RAM芯片) hwclock 查看硬件时间 hwclock ...

  8. 针对myeclipse6.5无法自动生成toString方法

    public void getToStringSTR(){ Field[] fs = this.getClass().getDeclaredFields(); for (int i = 0; i &l ...

  9. scrollto 到指定位置

    goTo = function(target){ var scrollT = document.body.scrollTop|| document.documentElement.scrollTop ...

  10. P4168 [Violet]蒲公英 区间众数

    $ \color{#0066ff}{ 题目描述 }$ 在乡下的小路旁种着许多蒲公英,而我们的问题正是与这些蒲公英有关. 为了简化起见,我们把所有的蒲公英看成一个长度为n的序列 \((a_1,a_2.. ...