- 浏览: 208449 次
- 性别:
- 来自: 福建省
最新评论
-
c929833623:
...
Mysql JDBC驱动源码分析(Statement,ResultSet的创建)四 -
pythonlord:
顶 很有帮助,感谢楼主,好人一生平安
Mysql JDBC驱动源码分析(加载驱动)一 -
kiaonly:
代码有错误,我戳。
解释器模式(Interpreter)---java与模式(例子) -
wyzxzws:
小鸟学习了!
JAVA编码问题记录 -
xiaotao.2010:
写的不错! 弱弱说一句 建议使用URL二次转码, 这样可以避免 ...
JAVA编码问题记录
文章列表
单点登录(sso)是指基于用户/会话认证的一个过程,用户只需一次性提供凭证(仅一次登录),就可以访问多个应用。
一, 最近一段时间公司进行系统整合,公司决定采用yale cas 单点登录进行整合,在这里对在项目整合中遇到的问题进行总结:
1,到官方上下载CAS2.x服务器改名为ssoAuth
2,以ssoAuth/login为所有系统的登录页,对每个系统进行配置,配置如下:
可查看这篇文章:http://129-cat-163-com.iteye.com/blog/477506
3,在登录之后,遇到一个问题,就是重新刷新又回到登录页(在登录之后会产生 ...
一,响应工作我们应该从CoyoteAdapter#service方法下的
if (!comet) {
response.finishResponse();
req.action(ActionCode.ACTION_POST_REQUEST , null);
}
public void finishResponse()
throws IOException {
// Writing leftover bytes
out ...
对以上的StandardWrapperValve#invoke进行说解
if (!unavailable) {
//servlet行行在这一步
servlet = wrapper.allocate();
一,现在到了StandardWrapperValve#invoke下,现在才算是真正的调用,主要实现了对servlet,filter执行
/**
* Invoke the servlet we are managing, respecting the rules regarding
* servlet lifecycle and SingleThreadModel support.
*
* @param request Request to be processed
* @param response Response ...
一,这一章节主要讲request与response通过管道,阀门在各个容器间运行
1,connector.getContainer().getPipeline().getFirst().invoke(request, response);
这一步是StandardEngine获取StandardPipeline被StandardEngineValve进行过滤后执行到StandardHost
public final void invoke(Request request, Response response)
throws IOException, Servle ...
一,经过以上文章(JIoEndpoint$Worker#run)执行,就成功把socket交给tomcat中的coyote包执行
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler#process(Socket socket)
public boolean process(Socket socket) {
Http11Processor processor = recycledProcessors.poll();
try {
...
一,在以上文章中tomcat启动已经完毕,接着要做的是消息的请求与响应
以下是tomcat文档中的详解
-----------------------------------------------------------------------------------------------
d) Tomcat receives a request on an HTTP port
d1) The request is received by a separate thread which is waiting in the PoolTcpEndPoint
...
现在容器已经启动成功的StanderService#start中继续是executor(不作详解)与connector的启动
//两个connector的启动8080 8009
synchronized (connectors) {
一,容器已经启动到部暑文件(webapps),接下去是StandardContext,standardWarpper还有Connector等的启动
我们来了解一下部暑war文件
// Deploy WARs, and loop if additional descriptors are found
//appBase:webapps File appBase.list:所存放的工程
deployWARs(appBase, appBase.list());
/**
* Deploy WAR files.
...
super.start()--->org.apache.catalina.core.ContainerBase#start()
/**
* Prepare for active use of the public methods of this Component.
*
* @exception LifecycleException if this component detects a fatal error
* that prevents it from being started
*/
public ...
一,完成了以上的初始化工作,现在进行容器的启动工作由
-------------------------------------------------------------------------------------
c) Catalina.start()
c1) Starts the NamingContext and binds all JNDI references into it
c2) Starts the services under <Server> which are:
StandardService -> start ...
一,上面文章完成了对server.xml载入以及解析,现在主要做的是就是对里面所定义的容器进行初始化工作.
查看org.apache.catalina.startup.Catalina#load()
//StandarServer开始进行实例化
server.initialize();
默认情况下是org.apache.catalina.core.StandardServer#initialize的初始化....
public void initialize()
throws LifecycleE ...
一,根据以上文章所讲的对server.xml的解析作下简单的分析
org.apache.catalina.startup.Catalina#load
Digester是用sax来解析server.xml的类,这一步是初始化
//创建该对象,主要是对conf/server.xml进行解析
Digester digester = createStartDigester();
tomcat文档的解析如下:
--------------------------------------------------------------------------- ...
一,进行了以上的类包加载后,现在主要的工作是载入server.xml,并对里面的配置进行解析,最特别的就是里面各个容器的初始化(Server,Service,Engine,Host,Context).
--------------------------------------------------------------------------------------------------------------
Process command line argument (start, startd, stop, stopd)
Class: org.apache.cat ...
一,启动
Tomcat是从org.apache.catalina.startup.Bootstrap#main()开始启动.代码如下:
public static void main(String args[]) {
if (daemon == null) {
daemon = new Bootstrap();
try {
daemon.init();
} catch (Throwable t) {
t.printS ...