Tomcat

CAS集群解决方案

拟墨画扇 提交于 2020-12-09 03:06:53
1. 总体方案 本方案的目的是搭建一个高可用,高可伸缩的中心认证服务。环境是 CAS 服务器是可任意扩展的,任意一个 CAS 服务节点均是等效的, CAS 服务器的状态信息是集中存储的; CAS 服务的客户端应用也是集群的环境,客户端应用服务器也是可任意扩展的,客户端应用的 session 状态信息是集中存储的,任意两个应用服务节点都是等效的; CAS 服务器和客户端应用的状态信息集中存储在缓存服务器 Memcached 上。该方案具有以下特性。 l 只支持 Tomcat6.x 和 Tomcat7.x 。 l 无单点故障。 l 能够应对 Tomcat 故障转移。 l 能够应对 memcached 故障转移。 注意:上述方案中有一个问题是如果 cas 服务端应用程序或者客户端应用程序将某些状态数据直接存储在 jvm 本地对象中的时候,则节点会出现不等效的情况,甚至出现不稳定的故障。该问题的解决办法是: 1. 避免这样的情况。 2. 同步各 jvm 实例之间的所有对象。 1.1. 正常登录流程(未单点登录)讨论 讨论用户的浏览器里无 TGT cookie值,即未曾登录过 CAS 服务器。 1. 用户浏览器访问必联网受保护的资源,假设用户未登录必联网应用,由于必联网各节点的 session 状态集中存储,则任意一个节点都是等效的。 2. 用户浏览器被转发请求到 cas 服务器

灰度发布浅析

╄→尐↘猪︶ㄣ 提交于 2020-12-08 09:57:25
定义 灰度发布就是已一种平滑过渡的方式来发布,通过切换线上新旧版本之间的路由权重,逐步从旧版本切换到新版本;比如要上线新功能,首先只是更新少量的服务节点,通过路由权重,让少部分用户体验新版本,如果没有什么问题,再更新所有服务节点;这样可以在出现问题把影响面降到最低,保证了系统的稳定性。 灰度发布 一个系统往往有接入层比如nginx(Openresty),网关层比如zuul,以及服务层比如各种rpc框架;在这几层都有路由功能,也就是说这几层都可以做灰度;接入层可以使用nginx+lua来实现灰度,网关层zuul可以结合ribbon来实现灰度,rpc框架如dubbo本身提供了路由功能可以直接做灰度处理;下面看看具体如何去实现; 接入层灰度 接入层我们这里使用功能更强大的Openresty,然后使用lua进行路由转发,相关的路由策略可以配置在分布式缓存redis里面,当然也可以持久化到数据库里面; 准备 准备一台Openresty,两台web服务器tomcat(端口分别是8081,8082),以及redis;为了方便模拟在redis里面配置白名单,如果在白名单里面就走8082,不在则走8081; Openresty配置 需要在Openresty中配置支持lua,以及相关路由的lua脚本,nginx.conf配置如下: http { ... lua_package_path "

session的工作原理

江枫思渺然 提交于 2020-12-08 08:32:27
一、session的概念及特点   session概念:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。说白了session就是一种可以维持服务器端的数据存储技术。session主要有以下的这些特点: session保存的位置是在服务端 session一般来说要配合cookie使用,如果用户浏览器禁用了cookie,那么只能使用URL重写来实现session的存储功能 单纯的使用session来存储用户回话信息,那么当用户量较多时,session文件数量会很多,会存在session查询慢的问题 本质上:session技术就是一种基于后端有别于数据库的临时存储技术 二、为什么要使用session   我们目前使用的互联网应用层协议基本上都是基于 HTTP 和 HTTPS 的,它们的本身是无状态的, 只负责请求和响应。 我告诉服务器我需要什么,服务器返回给我相应的资源。 如果没有额外处理的话, 服务器是不知道你是谁,更无法根据你是谁给你展现和你相关的内容了。HTTP 协议一开始被设计成这样还是有一些历史原因的,当时的互联网多用于学术交流,只用于文章信息的展现之类的事情,远没有现在这么丰富多彩。所以在当时的背景下 HTTP 协议被设计成这样其实也是很符合它的场景的。但随着互联网应用越来越广泛,应用的形式也变得越来越多,我们的

session的工作原理

拈花ヽ惹草 提交于 2020-12-08 08:32:11
session的工作原理 一、术语session 在我的经验里,session这个词被滥用的程度大概仅次于transaction,更加有趣的是transaction与session在某些语境下的含义是相同的。 session,中文经常翻译为会话,其本来的含义是指有始有终的一系列动作/消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个session。有时候我们可以看到这样的话“在一个浏览器会话期间,...”,这里的会话一词用的就是其本义,是指从一个浏览器窗口打开到关闭这个期间①。最混乱的是“用户(客户端)在一次会话期间”这样一句话,它可能指用户的一系列动作(一般情况下是同某个具体目的相关的一系列动作,比如从登录到选购商品到结账登出这样一个网上购物的过程,有时候也被称为一个transaction),然而有时候也可能仅仅是指一次连接,也有可能是指含义①,其中的差别只能靠上下文来推断②。 然而当session一词与网络协议相关联时,它又往往隐含了“面向连接”和/或“保持状态”这样两个含义,“面向连接”指的是在通信双方在通信之前要先建立一个通信的渠道,比如打电话,直到对方接了电话通信才能开始,与此相对的是写信,在你把信发出去的时候你并不能确认对方的地址是否正确,通信渠道不一定能建立,但对发信人来说,通信已经开始了。“保持状态”则是指通信的一方能够把一系列的消息关联起来

web server 乱码

允我心安 提交于 2020-12-08 07:47:43
以下前端都是 utf-8 字符集编码 一、后台接收 1.1 、 get 请求 get 请求中,请求参数在请求头中; 解决方法:通过在 web server 中配置编码格式: tomcat 中,在 Connector 中添加 URIEncoding="UTF-8" ; 1.2、post 请求乱码 post 请求中,请求参数分两部份, 1.2.1、url?参数,这部分参数在请求头中 解决方法:与 get 请求中相同 1.2.2、其他请求参数在请求体中(这部分参数 web server 不会对其编码) 解决方法: 1、request.setCharacterEncoding("UTF-8"); 注:要在 request 任何操作之前设置,否则无效。 2、在 web.xml 中配置拦截器来设置编码字符集: <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter

Why have a shutdown port in Tomcat?

落花浮王杯 提交于 2020-12-08 06:59:53
问题 I am trying to think of a reason why Tomcat would have a shutdown port but I can't think of any. As I understand it this port only works if messaged locally as it's attached to the loopback device, hence what's the point of having this? Couldn't this be done via internal command in a way that couldn't be spoofed by someone from outside your network? Thank you! 回答1: The shutdown port provides an OS neutral, scriptable way to shutdown a Tomcat instance. Once you remove the shutdown port you are

Why have a shutdown port in Tomcat?

拜拜、爱过 提交于 2020-12-08 06:59:16
问题 I am trying to think of a reason why Tomcat would have a shutdown port but I can't think of any. As I understand it this port only works if messaged locally as it's attached to the loopback device, hence what's the point of having this? Couldn't this be done via internal command in a way that couldn't be spoofed by someone from outside your network? Thank you! 回答1: The shutdown port provides an OS neutral, scriptable way to shutdown a Tomcat instance. Once you remove the shutdown port you are

【Solr】solr-4.10.3配置业务域

寵の児 提交于 2020-12-08 01:59:18
前言 要想把数据放入solr中,首先要有对应的域,域是先定义后使用的。 配置中文分析器 (1)下载IK Analyzer 2012FF_hf1中文分析器。 下载地址 (2)进入到IK Analyzer 2012FF_hf1目录,将IKAnalyzer2012FF_u1.jar复制到/tomcat/webapps/solr-4.10.3/WEB-INF/lib/下,将ext_stopword.dic、IKAnalyzer.cfg.xml、mydict.dic复制到/tomcat/webapps/solr-4.10.3/WEB-INF/classes/目录下。 配置/solrhome/collection1/conf/schema.xml (1)配置filed-type来指定数据类型使用该中文分析器进行分词。 (2)设置业务域。id域默认使用数据id,并配置业务域的分析器使用配置好的中文分析器。 总结 solr业务域配置完成,可以实现数据的导入并查询了。 来源: oschina 链接: https://my.oschina.net/u/4364052/blog/4779092

部署Tomcat服务时,解决Cannot invoke Tomcat Manager 异常

喜夏-厌秋 提交于 2020-12-08 01:29:26
部署Tomcat服务时,解决Cannot invoke Tomcat Manager 异常 参考文章: (1)部署Tomcat服务时,解决Cannot invoke Tomcat Manager 异常 (2)https://www.cnblogs.com/shuimuzhushui/p/7450603.html 备忘一下。 来源: oschina 链接: https://my.oschina.net/u/4428122/blog/4780086

【Solr】Solr-4.10.3安装教程

旧巷老猫 提交于 2020-12-08 01:26:55
前言 Solr是一个可伸缩性的、能够即时部署的、致力于信息检索的、可以处理海量信息的、以处理自然语言文本为中心的、检索结果按相关性排序的企业级搜索引擎。 Solr处理的业务需求有以下4个特点: (1)无结构化的自然语言文本为中心; (2)信息浏览占主导地位的用户需求; (3)以Document这种扁平化并且独立的结构组织信息(区别与关系型数据库); (4)要求组织成的数据模式灵活多变(不像数据库表一样要求统一的字段)。 环境 (1)jdk1.7 下载地址 (2)Linux环境 (3)tomcat 安装步骤 (1)把solr 的压缩包上传到Linux系统 solr-4.10.3下载地址 (2)解压( tar xzvf solr-4.10.3.tgz.tgz ) 我们这里不用bin启动,而是以tomcat作为容器启动。也就是dist包下的war,如下图。 主要使用的就是第一个和第三个,直接将war包部署到tomcat即可。 solrhome的包在example下,如下图。 (3)将solr-4.10.3.war部署到tomcat下。(它本身的bin目录下也有启动方式,使用的是jetty容器。) (4)将/solr-4.10.3/example/lib/ext目录下的所有jar包添加到tomcat解压出来的/tomcat/webapps/solr-4.10.3/WEB-INF/lib中。