为了实现https协议通信,tomcat需要利用JSSE把SSL/TLS协议集成到自身系统上,通过上一节我们知道不同的厂商可以实现自己的JSSE,而tomcat默认使用的是以前sun公司开发实现的包而且由JDK自带。
Tomcat实现http及https通信的基础是什么?其实http与https的不同就是在创建通信套接字服务器时的不同,http是没有任何加密措施的套接字服务器,而https是靠嵌套了一层密码机制的套接字服务器。在实现时只需根据实际通信情况创建对应的套接字服务器,这时你应该果断想起工厂类,由各自工厂负责创建及初始化套接字服务器。看图3-1-7-4,在tomcat启动初始化时其中一个组件JIoEndpoint也会跟着初始化,届时它将根据配置文件的SSL标识来决定创建ServerSocket还是SSLServerSocket。如果是http协议则使用DefaultServerSocketFactory完成套接字服务器创建,反之,如果是https协议则要通过SSLImplementation间接定位到JSSESocketFactory,由它完成套接字服务器的创建。