spring boot实战之内嵌容器tomcat配置
本文介绍了springboot实战之内嵌容器tomcat配置,分享给大家,具体如下:
默认容器
springboot默认web程序启用tomcat内嵌容器tomcat,监听8080端口,servletPath默认为/通过需要用到的就是端口、上下文路径的修改,在springboot中其修改方法及其简单;
在资源文件中配置:
server.port=9090 server.contextPath=/lkl
启动springboot
2015-10-0400:06:55.768INFO609---[main]o.s.w.s.handler.SimpleUrlHandlerMapping:MappedURLpath[/**/favicon.ico]ontohandleroftype[classorg.springframework.web.servlet.resource.ResourceHttpRequestHandler] 2015-10-0400:06:55.844INFO609---[main]o.s.j.e.a.AnnotationMBeanExporter:RegisteringbeansforJMXexposureonstartup 2015-10-0400:06:55.928INFO609---[main]s.b.c.e.t.TomcatEmbeddedServletContainer:Tomcatstartedonport(s):9090(http) 2015-10-0400:06:55.930INFO609---[main]com.lkl.springboot.Application:StartedApplicationin3.906seconds(JVMrunningfor4.184)
可以看出其监听端口9090,执行http://localhost:9090/lkl/springboot/liaokailin成功访问
自定义tomcat
在实际的项目中简单的配置tomcat端口肯定无法满足大家的需求,因此需要自定义tomcat配置信息来灵活的控制tomcat。
以定义默认编码为例
packagecom.lkl.springboot.container.tomcat; importorg.springframework.boot.context.embedded.EmbeddedServletContainerFactory; importorg.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; importorg.springframework.context.annotation.Bean; importorg.springframework.context.annotation.Configuration; /** *tomcat配置 *@authorliaokailin *@version$Id:TomcatConfig.java,v0.12015年10月4日上午12:11:47liaokailinExp$ */ @Configuration publicclassTomcatConfig{ @Bean publicEmbeddedServletContainerFactoryservletContainer(){ TomcatEmbeddedServletContainerFactorytomcat=newTomcatEmbeddedServletContainerFactory(); tomcat.setUriEncoding("UTF-8"); returntomcat; } }
构建EmbeddedServletContainerFactory的bean,获取到TomcatEmbeddedServletContainerFactory实例以后可以对tomcat进行设置,例如这里设置编码为UTF-8
SSL配置
生成证书
keytool-genkey-aliasspringboot-keyalgRSA-keystore/Users/liaokailin/software/ca1/keystore 设置密码123456
tomcat中验证证书是否正确
修改tomcat/conf/server.xml文件
启动tomcat,访问http://localhost:8443
springboot内嵌tomcatssl
配置资源文件
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启动tomcatssl配置
- server.ssl.keyAlias别名
- server.ssl.keyPassword密码
- server.ssl.keyStore位置
启动springboot
访问https://localhost:8443/springboot/helloworld
多端口监听配置
前面启动ssl后只能走https,不能通过http进行访问,如果要监听多端口,可采用编码形式实现。
1.注销前面ssl配置,设置配置server.port=9090
2.修改TomcatConfig.java
packagecom.lkl.springboot.container.tomcat; importjava.io.File; importorg.apache.catalina.connector.Connector; importorg.apache.coyote.http11.Http11NioProtocol; importorg.springframework.boot.context.embedded.EmbeddedServletContainerFactory; importorg.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory; importorg.springframework.context.annotation.Bean; importorg.springframework.context.annotation.Configuration; /** *tomcat配置 *@authorliaokailin *@version$Id:TomcatConfig.java,v0.12015年10月4日上午12:11:47liaokailinExp$ */ @Configuration publicclassTomcatConfig{ @Bean publicEmbeddedServletContainerFactoryservletContainer(){ TomcatEmbeddedServletContainerFactorytomcat=newTomcatEmbeddedServletContainerFactory(); tomcat.setUriEncoding("UTF-8"); tomcat.addAdditionalTomcatConnectors(createSslConnector()); returntomcat; } privateConnectorcreateSslConnector(){ Connectorconnector=newConnector("org.apache.coyote.http11.Http11NioProtocol"); Http11NioProtocolprotocol=(Http11NioProtocol)connector.getProtocolHandler(); try{ Filetruststore=newFile("/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"); returnconnector; }catch(Exceptionex){ thrownewIllegalStateException("cantaccesskeystore:["+"keystore"+"]",ex); } } }
通过addAdditionalTomcatConnectors方法添加多个监听连接;此时可以通过http9090端口,https8443端口。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。