- 浏览: 1285342 次
- 性别:
- 来自: 北京
-
最新评论
-
最后的攻城狮:
这也太乱了
mybatis与spring事物处理日志 -
leo_soul:
现在不能跨1级域名了吧?比如www.aaa.com,www.b ...
Cookie跨域操作 -
zy976133:
怎么解决的
jaxws不支持SOAPBinding.Use.ENCODED -
cuiyaoqiang:
你好 开发一个http接口给fs调用 ,这个http接口是自己 ...
freeswitch 动态加载号码 -
Jackromer:
请问楼主知道如何通过主控方来删除与其有关的中间表记录? 谢谢, ...
hibernate 多对多只删除中间表数据
文章列表
JMS的配置如下
<bean id="activemqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory" >
<property name="brokerURL" value="vm://localhost" />
</bean>
<bean class="org.springframework.jms.listener.DefaultMessage ...
很多框架提供计时类 spring也不例外
记录下使用StopWatch的类
package cn.ceopen.zweb.common;
import java.io.IOException;
import java.text.NumberFormat;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.restlet.data.Request ...
项目要求把http请求和响应的报文输出
发送http采用的是restlet框架 其中报文body用Representation类坐了封装
通过方法
Representation.getText();
可以获取到报文body
但开发中遇到不能重复执行getText()的问题
通过查源码得知:在http响应时Representation封装了一个io流 只能读取一次
好在Representation提供了isTransient()方法来判断getText()能否重复执行
/**
* Indicates if the representation's content is tr ...
SSO client端代码
其实就是一个过滤器 Filter
class SSOFilter{
public void doFilter(){
if(isLogin == true){
doFilter(req, resp);
}else if(existTicket){
getAuthenticatedUser(ticket);
}else{
redirectSSOServer('http://ssoserver/login.jsp?service=aURL');
}
}
...
memcached session manager(MSM) 用集中式缓存方式解决了集群环境的session共享
MSM用MemcachedBackupSessionManager类替换了StandardManager
1 MSM通过两个Valve拦截Request请求实现了对Session的操作
RequestTrackingHostValve
RequestTrackingContextValve
这两个Valve是在startInternal()方法中加载的 如下代码
_trackingHostValve = new RequestTrackingHostValve( ...
如果想要实现不同级别的日志输出到不同目的地呢?网址http://topic.csdn.net/u/20070524/12/77df885b-1efe-4fee-ab20-64ab4008cf11.html提到采用如下方式
log4j.logger.forDebug=DEBUG,debugAppender
log4j.appender.debugAppender=org.apache.log4j.DailyRollingFileAppender
log4j.logger.forInfo=INFO,infoAppender
log4j.appender.infoAppender=org.apache ...
服务端主要保存三类数据
1 TicketGrantingTicketImpl (memcached)
2 ServiceTicket (memcached)
3 DefaultServicesManagerImpl (jvm)
TGT 对应类 TicketGrantingTicketImpl
TicketGrantingTicketImpl 中包含一个Map<String,Service>
此Map保存其颁发的ticketId
public final class TicketGrantingTicketImpl extends AbstractTic ...
public OperationFuture<Boolean> set(String key, int exp, Object o) {
return asyncStore(StoreType.set, key, exp, o, transcoder);
}
这是set方法 注释中有这样一段
* <p>
* The actual value sent may either be Unix time (number of seconds since
* January 1, 1970, as a 32-bit value), or ...
tomcat提供了session复制的方式来实现集群,其核心思想是把A机器的session复制到集群中所有机器,这样做的好吃不说了 坏处是复制成本太高
我们把session复制成分分散式session管理,把MSM称谓集中式session管理
MSM把所有的session统一保存到memcached,所有集群中的服务器读取/写入session都是同一个接口
MSM是如何工作的
相当于一个Filter:当请求进入tomcat时 拦截http请求并从memcached中读取session到本地 当请求处理完毕再把session写入memcached
使用MSM时注意所有写入session中的数 ...
renew
是否每次都登陆sso server
CAS协议允许客户端选择是否跳出单点登录(强制重新登录),这就是renew。它允许一个客户端通知CAS服务器总是验证一个用户,不管一个单点登录的session是否存在。这是一个非常有用的属性,当一个 ...
spymemcached日志需要在java启动参数中配置
在tomcat中配置方法:
打开tomcat/bin/catalina.sh
找的JAVA_OPTS 变量,添加行
JAVA_OPTS="$JAVA_OPTS -Dnet.spy.log.LoggerImpl=net.spy.memcached.compat.log.Log4JLogger"
在spymemcached中是这样处理的
spy的LoggerFactory类中
@SuppressWarnings("unchecked")
private void getConstruc ...
这里只给出核心代码 doFilter
首先要明确一点 SingleSignOutFilter 会拦截所有请求,而不是仅仅拦截logout时的请求
在sso client应用中存在一个Map<Ticket,HttpSession>对象
在sso server认证用户名密码成功后,会redirect一个带有ticket的请求到sso client
这时就执行下面的逻辑,ticket和当前session会被缓存到Map
退出时,sso server发送带logoutRequest参数的http请求到每一个sso client
这时就会执行下面的逻辑 --- 删除ticket对应的se ...
SSO协议规范可分为三个部分:
1 用户认证流程
2 用户登陆流程
3 用户退出流程
本文讲第一点
用户认证流程:
1: http request
浏览器 to sso client(service)
url:http://ssoclient
http response
sso client to 浏览器(302跳转到ssoserver)
Location:http://ssoserver?service=http://ssoclient
2:http request
浏览器 - sso server
http://ssoserver?ser ...
memcached启动命令
引用memcached -d -m 10 -u root -l 192.168.0.122 -p 11200 -c 256 -P /tmp/memcached.pid
-d 选项是启动一个守护进程,
-m 是分配给Memcache使用的内存数量,单位是MB,这里是10MB
-u 是运行Memcache的用户,这里是root
-l 是监听的服务器IP地址,如果有多个地址的话,这里指定了服务器的IP地址192.168.0.122
-p 是设置Memcache监听的端口,这里设置了12000,最好是1024以上的端口
-c 选项是最大运行的并发连接数,默认是1024,这里设 ...
很简单 就三行 跟把大象放冰箱的步骤一致
/opt/tomcat/bin/shutdown.sh
sleep 10
/opt/tomcat/bin/start.sh