spring boot默认web程序启用tomcat内嵌容器tomcat,监听8080端口,servletPath默认为 / 通过需要用到的就是端口、上下文路径的修改,在spring boot中其修改方法及其简单;

在资源文件中配置:

server.port=9090
server.contextPath=/lkl

启动spring boot

2015-10-04 00:06:55.768  INFO 609 --- [           main] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2015-10-04 00:06:55.844  INFO 609 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2015-10-04 00:06:55.928  INFO 609 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 9090 (http)
2015-10-04 00:06:55.930  INFO 609 --- [           main] com.lkl.springboot.Application       : Started Application in 3.906 seconds (JVM running for 4.184)

可以看出其监听端口9090,执行 
http://localhost:9090/lkl/springboot/liaokailin 成功访问

自定义tomcat

在实际的项目中简单的配置tomcat端口肯定无法满足大家的需求,因此需要自定义tomcat配置信息来灵活的控制tomcat。

以定义默认编码为例

package com.lkl.springboot.container.tomcat;import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** tomcat 配置* @author liaokailin* @version $Id: TomcatConfig.java, v 0.1 2015年10月4日 上午12:11:47 liaokailin Exp $*/
@Configuration
public class TomcatConfig {@Beanpublic EmbeddedServletContainerFactory servletContainer() {TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();tomcat.setUriEncoding("UTF-8");return tomcat;}}

构建EmbeddedServletContainerFactory的bean,获取到TomcatEmbeddedServletContainerFactory实例以后可以对tomcat进行设置,例如这里设置编码为UTF-8

SSL配置

生成证书

keytool -genkey -alias springboot -keyalg RSA -keystore /Users/liaokailin/software/ca1/keystore
设置密码123456

生成证书

tomcat中验证证书是否正确

修改tomcat/conf/server.xml文件

<Connector              protocol="org.apache.coyote.http11.Http11NioProtocol"port="8443" maxThreads="200"scheme="https" secure="true" SSLEnabled="true"keystoreFile="/Users/liaokailin/software/ca1/keystore" keystorePass="123456"clientAuth="false" sslProtocol="TLS"/>

启动tomcat ,访问 http://localhost:8443

https访问

spring boot 内嵌tomcat ssl

配置资源文件

server.port=8443
server.ssl.enabled=true
server.ssl.keyAlias=springboot
server.ssl.keyPassword=123456
server.ssl.keyStore=/Users/liaokailin/software/ca1/keystore
  • server.ssl.enabled 启动tomcat ssl配置
  • server.ssl.keyAlias 别名
  • server.ssl.keyPassword 密码
  • server.ssl.keyStore 位置

启动 spring boot

启动spring boot

访问https://localhost:8443/springboot/helloworld

访问https

多端口监听配置

前面启动ssl后只能走https,不能通过http进行访问,如果要监听多端口,可采用编码形式实现。

1.注销前面ssl配置,设置配置 server.port=9090

2.修改TomcatConfig.java

package com.lkl.springboot.container.tomcat;import java.io.File;import org.apache.catalina.connector.Connector;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** tomcat 配置* @author liaokailin* @version $Id: TomcatConfig.java, v 0.1 2015年10月4日 上午12:11:47 liaokailin Exp $*/
@Configuration
public class TomcatConfig {@Beanpublic EmbeddedServletContainerFactory servletContainer() {TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();tomcat.setUriEncoding("UTF-8");tomcat.addAdditionalTomcatConnectors(createSslConnector());return tomcat;}private Connector createSslConnector() {Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");Http11NioProtocol protocol = (Http11NioProtocol) connector.getProtocolHandler();try {File truststore = new File("/Users/liaokailin/software/ca1/keystore");connector.setScheme("https");protocol.setSSLEnabled(true);connector.setSecure(true);connector.setPort(8443);protocol.setKeystoreFile(truststore.getAbsolutePath());protocol.setKeystorePass("123456");protocol.setKeyAlias("springboot");return connector;} catch (Exception ex) {throw new IllegalStateException("cant access keystore: [" + "keystore" + "]  ", ex);}}
}

通过addAdditionalTomcatConnectors方法添加多个监听连接;此时可以通过http 9090端口,https 8443端口。

spring boot实战(第七篇)内嵌容器tomcat配置相关推荐

  1. spring boot实战(第六篇)加载application资源文件源码分析

    前言 在上一篇中了解了spring配置资源的加载过程,本篇在此基础上学习spring boot如何默认加载application.xml等文件信息的. ConfigFileApplicationLis ...

  2. spring boot实战(第十篇)Spring boot Bean加载源码分析

    前言 前面的文章描述了Application对应Bean的创建,本篇将阐述spring boot中bean的创建过程 refresh 首先来看SpringApplication#run方法中refre ...

  3. spring boot实战(第四篇)分散配置

    前言 分散配置是系统必不可少的一部分,将配置参数抽离出来为后期维护提供很大的便利.spring boot 默认支持两个格式的配置文件:.properties .yml. .properties与.ym ...

  4. Spring Boot 内嵌容器 Tomcat / Undertow / Jetty 优雅停机实现

    Spring Boot 在关闭时,如果有请求没有响应完,在不同的容器会出现不同的结果,例如,在 Tomcat 和 Undertow 中会出现中断异常,那么就有可能对业务造成影响.所以,优雅停机非常有必 ...

  5. Spring Boot 容器选择 Undertow 而不是 Tomcat Spring Boot 内嵌容器Unde

    Spring Boot 内嵌容器Undertow参数设置 配置项: # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程 # 不要设置过大,如果过大,启动 ...

  6. springboot java获取版本号_深入实践Spring Boot 实战篇,大佬整理出的PDF文档

    如何使用Spring Boot 本文章将会详细介绍如何使用Spring Boot.它覆盖了构建系统,自动配置和运行/部署选项等主题.我们也覆盖了一些Spring Boot最佳实践.尽管Spring B ...

  7. 程序猿最终之路-架构师:Spring boot实战战役解析

    什么是架构师 所谓架构师,通俗地说就是设计师或结构设计者,这些定义如果用在建筑学上,则是很容易理解的.在软件工程领域中,软件架构师实际上就是软件项目的总体设计师,是软件组织新产品的开发与集成.新技术体 ...

  8. Spring Boot实战解决高并发数据入库: Redis 缓存+MySQL 批量入库

    前言 最近在做阅读类的业务,需要记录用户的PV,UV: 项目状况:前期尝试业务阶段: 特点: 快速实现(不需要做太重,满足初期推广运营即可) 快速投入市场去运营 收集用户的原始数据,三要素: 谁 在什 ...

  9. JavaEE开发的颠覆者 Spring Boot实战

    网站 更多书籍点击进入>> CiCi岛 下载 电子版仅供预览及学习交流使用,下载后请24小时内删除,支持正版,喜欢的请购买正版书籍 电子书下载(皮皮云盘-点击"普通下载" ...

最新文章

  1. 使用pandas correlation函数批量删除相关性冗余特征、实现特征筛选(feature selection)
  2. 使tomcat和lighttpd使用service启停
  3. Java JDBC数据库 之 DBUtil 封装类
  4. ganglia-介绍安装(二)
  5. VS2013(Win10X64)-配置编译Caffe
  6. Spring学习(10)--- @Qualifier注解
  7. maven02-----Maven项目构建的初次使用
  8. hosts文件 端口_在Linux系统中使用Vim读写远程文件
  9. (HDOJ 2043)密码
  10. Linux for Matlab中文注释乱码(亲测有效)
  11. Yii Framework2.0开发教程(2)使用表单Form
  12. 181009词霸有道扇贝每日一句
  13. 头文件注释轻松搞—VS2013
  14. 辉群 mysql支持,群辉下的nas各项共享设置——白羊座适用
  15. python图片马赛克_利用Python对图片进行马赛克处理
  16. Windows Mobile系统PDA进行GPS导航的入门知识
  17. 软件测试薪资高不高?软件测试工资水平调研公布
  18. vue调用服务器图片
  19. 吕著三国史话(观后感一)
  20. jsp传递参数java_JSP页面间传递参数方法介绍

热门文章

  1. linux下安装jira详细步骤
  2. JS实现md5.js、md4.js、sha1.js 加密算法使用
  3. CheckedListBox与下拉框联动代码
  4. div内容设float之后,div的自动高度适应
  5. PSO DE EA算法的不同及相同之处。
  6. MATLAB:图像半色调技术简介
  7. 将查询结果插入到现有表中
  8. H3C S6800交换机基本配置命令
  9. winsever 2008 r2 管理员账号没有权限_钉钉管理员攻略—主管理员①
  10. UBOOT手动设置环境变量