web容器

spring与tomcat的关系逆袭前后的设计分析

落花浮王杯 提交于 2020-01-15 05:11:43
https://blog.csdn.net/herriman/article/details/103646985 简介 ​ Tomcat与spring是最常用的东东。本文以Tomcat代表webServer,对比了从Tomcat这样的webServer,来启动spring应用,和最新的springboot启动Tomcat的源码实现过程。加深了对两个系统的了解,从大的方向上学习了系统之间如何组合及设计考量。 ​ 学习了很多相关技术的贴子并阅读了源码,但目前没看到全面分析对比的文章。 ​ 本文以功能为本,注重核心类与接口的关系,有助于整体上把握大系统的设计。不会有太多的代码,更不会分析不太重要的接口,不会有细节的类图与泳道图。本文以Servlet 3.0+环境为主,就不介绍太早的web.xml配置了。我看的springboot是2.2.0.BUILD-SNAPSHOT。 tomcat启动多个包含的应用 **VS** 一个spring应用通过web服务器展示感觉spring从规范tomcat下的一个应用,到了以应用为主,通过各种途经暴露自己的核心应用了,甚至react方式绕过servlet了。算是逆袭吧! 包含 包含 包含 TOMCAT 应用一 应用二 应用三 暴露 局部暴露 暴露 核心业务应用 协议服务 协议二服务 协议三服务 1. 从Tomcat启动spring 1.1

Docker Compose 引用环境变量详解

大憨熊 提交于 2020-01-15 04:44:59
原文: https://www.cnblogs.com/sparkdev/p/9826520.html 在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景。本文集中介绍 docker compose 引用环境变量的方式。 说明:本文的演示环境为 ubuntu 16.04。 Compose CLI 与环境变量 Compose CLI(compose command-line 即 docker-compose 程序)能够识别名称为 COMPOSE_PROJECT_NAME 和 COMPOSE_FILE 等环境变量(具体支持的环境变量请参考 这里 )。比如我们可以通过这两个环境变量为 docker-compose 指定 project 的名称和配置文件: $ export COMPOSE_PROJECT_NAME=TestVar $ export COMPOSE_FILE=~/projects/composecounter/docker-compose.yml 然后启动应用,显示的 project 名称都是我们在环境变量中指定的: 如果设置了环境变量的同时又指定了命令行选项,那么会应用命令行选项的设置: $ docker-compose -p nickproject up -d 在 compose file 中引用环境变量

Spring(一)开篇

别等时光非礼了梦想. 提交于 2020-01-15 00:45:36
目录 1、Spring 介绍 2、Spring 框架的演变 3、Spring 整体架构 Core Container Data Access/Integration Web AOP Test 最后 1、Spring 介绍 在早期 J2EE 时代,开发一个应用程序非常繁琐,先不说对象的创建及管理,如其它数据库访问、提供 Web 服务等都需耗费我们大量时间。当时一位名为 Rod Johnson 的澳大利亚人率先对这种 J2EE 系统框架臃肿、低效的种种现状提出了质疑,之后 Rod Johnson 编写《Expert one on one J2EE design and development》一书,通过书中阐述的部分理念和原型创建了Spring Framework 。(PS:Rod Johnson 居然是音乐学博士???) Spring Framework 是一个轻量级的 Java开源框架,主要是为了解决企业应用开发的复杂性而创建。它的核心是帮助我们管理对象及其依赖关系,但还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力,还集成了大量的第三方框架,如数据库访问框架 Hibernate ,mybatis、Web 服务框架 Struts 、自身提供的SpringMVC,还有任务调度、Redis 缓存,Mq等。 Spring Framework 还致力于 J2EE

Servlet,web服务器

时光怂恿深爱的人放手 提交于 2020-01-14 02:33:17
Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问。开发Java Web应用所采用的服务器主要是与JSP/Servlet兼容的Web服务器,比较常用的有Tomcat、Resin、JBoss、WebSphere 和 WebLogic 等。 1、Tomcat 服务器 目前非常流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet 技术的Web服务器,也是初学者学习开发JSP应用的首选。 2、Resin 服务器 Resin是Caucho公司的产品,是一个非常流行的支持Servlet和JSP的服务器,速度非常快。Resin本身包含了一个支持HTML的Web服务器,这使它不仅可以显示动态内容,而且显示静态内容的能力也毫不逊色,因此许多网站都是使用Resin服务器构建 3、JBoss服务器 JBoss是一个种遵从JavaEE规范的、开放源代码的、纯Java的EJB服务器,对于J2EE有很好的支持。JBoss采用JML API实现软件模块的集成与管理,其核心服务又是提供EJB服务器,不包含Servlet和JSP的Web容器,不过它可以和Tomcat完美结合 4、WebSphere 服务器 WebSphere是IBM公司的产品,可进一步细分为

pod健康检查详解(liveness,readiness,滚动更新)

独自空忆成欢 提交于 2020-01-14 02:21:16
环境介绍 主机 IP地址 服务 master 192.168.1.21 k8s+httpd+nginx node01 192.168.1.22 k8s node02 192.168.1.23 k8s 基于[ https://blog.51cto.com/14320361/2464655 ]() 的实验继续进行 一、Pod的liveness和readiness探针   Kubelet使用liveness probe(存活探针)来确定何时重启容器。例如,当应用程序处于运行状态但无法做进一步操作,liveness探针将捕获到deadlock,重启处于该状态下的容器,使应用程序在存在bug的情况下依然能够继续运行下去   Kubelet使用readiness probe(就绪探针)来确定容器是否已经就绪可以接受流量。只有当Pod中的容器都处于就绪状态时kubelet才会认定该Pod处于就绪状态。该信号的作用是控制哪些Pod应该作为service的后端。如果Pod处于非就绪状态,那么它们将会被从service的load balancer中移除。 Probe支持以下三种检查方法: <1>exec-命令 在用户容器内执行一次命令,如果命令执行的退出码为0,则认为应用程序正常运行,其他任务应用程序运行不正常。 livenessProbe: exec: command: - cat - /home

单点登录(Single Sign On)

大憨熊 提交于 2020-01-13 22:06:36
单点登录(Single Sign On) 单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中。本文从业务的角度分析了单点登录的需求和应用领域;从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO和桌面SSO的实现、源代码和详细讲解;还从安全和性能的角度对现有的实现技术进行进一步分析,指出相应的风险和需要改进的方面。本文除了从多个方面和角度给出了对单点登录(SSO)的全面分析,还并且讨论了如何将现有的应用和SSO服务结合起来,能够帮助应用架构师和系统分析人员从本质上认识单点登录,从而更好地设计出符合需要的安全架构。 关键字 :SSO, Java, J2EE, JAAS 1 什么是单点登陆 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 较大的企业内部,一般都有很多的业务支持系统为其提供相应的管理和IT服 务。例如财务系统为财务人员提供财务的管理、计算和报表服务;人事系统为人事部门提供全公司人员的维护服务;各种业务系统为公司内部不同的业务提供不同的 服务等等。这些系统的目的都是让计算机来进行复杂繁琐的计算工作,来替代人力的手工劳动,提高工作效率和质量。这些不同的系统往往是在不同的时期建设起来 的

Tomcat线程模型分析及源码解读

拥有回忆 提交于 2020-01-13 16:09:52
1 四种线程模型 配置方法:在tomcat conf 下找到server.xml,在<Connector port="8080" protocol="HTTP/1.1"/> BIO: protocol =" org.apache.coyote.http11.Http11Protocol" NIO: protocol ="org.apache.coyote.http11.Http11NioProtocol" AIO: protocol ="org.apache.coyote.http11.Http11Nio2Protocol" APR: protocol ="org.apache.coyote.http11.Http11AprProtocol" 2 Connector 结构 3 三种请求接受方式 Tomcat支持三种接收请求的处理方式:BIO、NIO、APR 1.BIO模式 阻塞式I/O操作,表示Tomcat使用的是传统Java I/O操作(即Java.io包及其子包)。Tomcat7以下版本默认情况下是以bio模式运行的,由于每个请求都要创建一个线程来处理,线程开销较大,不能处理高并发的场景,在三种模式中性能也最低。 启动tomcat看到如下日志,表示使用的是BIO模式: 2.NIO模式 是java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)

《熬夜吐血整理》近100道spring全家桶系列面试题整理【已完结!附答案文档】

社会主义新天地 提交于 2020-01-13 03:52:02
Spring 系列面试题整合 大家好,俺依旧是智慧与帅气并存的小木,今天给大家带来的是spring系列面试题完结篇 前言 终于!!! 功夫不负有心,历经3天时间 【加上熬夜四舍五入6天 [手动滑稽]】,小木这边把spring系列的面试题已经整理完毕了,得到了很多大佬的好评,我也是心生欢喜呀 同时也希望各位得到各位的支持,帮我点点赞好评一下是对我最大的支持 最近几天有很多朋友跟我聊到年后准备换工作跳槽,所以最近一段时间小木还是会照常更新面试知识点系列,这里已经把java岗位一写核心的知识点整理成了文档,希望大家加油!! 关于java核心知识点文档分享给大家 注:面试文档领取看文末 上上篇 — spring系列面试题整理题卡(1) 上篇 — spring boot,spring Cloud知识点整理(2) sping系列面试题展示 1、什么是spring? 2、使用Spring框架的好处是什么? 3、Spring由哪些模块组成? 4、核心容器(应用上下文) 模块 5、 BeanFactory – BeanFactory 实现举例 6、XMLBeanFactory 7、解释AOP模块 8、解释JDBC抽象和DAO模块 9、 解释对象/关系映射集成模块 10、解释WEB 模块 11、Spring配置文件 12、什么是Spring IOC 容器? 13、 IOC的优点是什么? 14、

2020年关于Java Web的核心点的理解与Java学习路径的探究(Java初学者)

流过昼夜 提交于 2020-01-13 00:23:12
关于Java Web的核心点的一些理解 关于Java Web的核心点的一些理解 关于工具 My Eclipse和Idea 关于Java EE 关于web开发的一些概念 架构 网络三要素 资源分类 Web服务器 应用服务器/servlet容器 反射 关于实际开发的几点问题 1 Jsp是否还有必要继续学习 2 Mybatis和Hibernate哪个是主流? 3 Spring已经成为了Java初级开发者必知必会框架? 4 初级Java开发者面试的侧重? 关于Java Web的核心点的一些理解 关于工具 My Eclipse和Idea 当前的开发工具已经逐渐从eclipse转向了idea,优势主要体现在框架部署易用,插件多且轻,支持多语言等。 关于Java EE Java EE 是Java的企业版,SE是Java基础,ME是mini Java。区别从开发规范上讲,企业版满足更多的开发规范;从SDK包含的组件来说,EE要多出一些组件包,主要是网络服务的jar包。 关于web开发的一些概念 架构 对不同层次的开发者或者说处在不同开发阶段的项目而言,架构代表的含义不同。 就最基本的开发性质而言,架构由C/S(Client客户端)和B/S(Browser浏览器端)架构两种; 从具体的项目开发角度而言,架构是对具体项目需求分析过后框架的选择。 网络三要素 访问服务器上网络资源的访问,其基本路径如下图

k8s中pod的资源对象(名称空间,获取策略,重启策略,健康检查)

自作多情 提交于 2020-01-12 22:16:19
一,k8s的资源对象 Deployment、Service、Pod是k8s最核心的3个资源对象 Deployment: 最常见的无状态应用的控制器,支持应用的扩缩容、滚动升级等操作。 Service: 为弹性变动且存在生命周期的Pod对象提供了一个固定的访问接口,用于服务发现和服务访问。 Pod: 是运行容器以及调度的最小单位。同一个pod可以同时运行多个容器,这些容器共享net、UTS、IPC,除此之外还有USER、PID、MOUNT。 ReplicationController: 用于确保每个Pod副本在任意时刻都能满足目标数量,简单来说,它用于每个容器或容器组总是运行并且可以访问的:老一代无状态的Pod应用控制器。 RwplicatSet: 新一代的无状态的Pod应用控制器,它与RC的不同之处在于支持的标签选择器不同,RC只支持等值选择器(键值对),RS还额外支持基于集合的选择器。 StatefulSet: 用于管理有状态的持久化应用,如database服务程序,它与Deployment不同之处在于,它会为每一个pod创建一个独有的持久性标识符,并确保每个pod之间的顺序性。 DaemonSet: 用于确保每一个节点都运行了某个pod的一个副本,新增的节点一样会被添加到此类pod,在节点移除时,此pod会被回收。 Job: 用于管理运行完成后即可终止的应用