本文介紹了spring boot實戰之內嵌容器tomcat配置,分享給大家,具體如下:
默認容器
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 startup2015-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 $ */@Configurationpublic class TomcatConfig { @Bean public 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
spring boot 內嵌tomcat ssl
配置資源文件
server.port=8443server.ssl.enabled=trueserver.ssl.keyAlias=springbootserver.ssl.keyPassword=123456server.ssl.keyStore=/Users/liaokailin/software/ca1/keystore
啟動 spring boot
訪問https://localhost:8443/springboot/helloworld
多端口監聽配置
前面啟動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 $ */@Configurationpublic class TomcatConfig { @Bean public 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端口。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答
圖片精選