本文介紹了spring boot實戰之內嵌容器tomcat配置,分享給大家,具體如下:
默認容器
spring boot默認web程序啟用tomcat內嵌容器tomcat,監聽8080端口,servletPath默認為 / 通過需要用到的就是端口、上下文路徑的修改,在spring boot中其修改方法及其簡單;
在資源文件中配置:
1
2
|
server.port=9090 server.contextPath=/lkl |
啟動spring boot
1
2
3
4
|
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。
以定義默認編碼為例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
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 { @Bean public EmbeddedServletContainerFactory servletContainer() { TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory(); tomcat.setUriEncoding( "UTF-8" ); return tomcat; } } |
構建EmbeddedServletContainerFactory的bean,獲取到TomcatEmbeddedServletContainerFactory實例以后可以對tomcat進行設置,例如這里設置編碼為UTF-8
SSL配置
生成證書
1
2
|
keytool -genkey -alias springboot -keyalg RSA -keystore /Users/liaokailin/software/ca1/keystore 設置密碼123456 |
tomcat中驗證證書是否正確
修改tomcat/conf/server.xml文件
1
2
3
4
5
6
|
< 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
配置資源文件
1
2
3
4
5
|
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
訪問https://localhost:8443/springboot/helloworld
多端口監聽配置
前面啟動ssl后只能走https,不能通過http進行訪問,如果要監聽多端口,可采用編碼形式實現。
1.注銷前面ssl配置,設置配置 server.port=9090
2.修改TomcatConfig.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
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 { @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端口。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://blog.csdn.net/liaokailin/article/details/48948093