Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->Linux安全 ->正文

Apache 门户项目组介绍

来源:IBW DW中国 作者:廖 健  时间:2007-04-22 点击: [收藏] [投稿]

由于信息太多,这里只能选取重要的来解释。首先,请注意名为 jetspeed的servlet,这就是前面一个小节里提到的入口servlet,它同时也是Portal runtime的入口,它被映射到几乎所有的URL Pattern。当来自客户端的Http请求满足这些Pattern时,jetspeed servlet将会触发如下图所示的处理流程:


图六 Jetspeed runtime execution process
图六 Jetspeed runtime execution process
JetspeedServlet首先会通过RequestContextComponent为当前Http Request创建RequestContext实例,然后在这个context下调用engine的service方法。然后就会进入Pipeline 的处理过程。

Pipeline

Jetspeed Pipeline实际上就是设计模式中常见的Chain of Responsibility模式的具体实现,其设计概念类似Servlet Filter,一个封装了HttpServletRequest和HttpServletResponse Object的Context在Pipeline中传递,每个valve都根据自己的需要从HttpServletRequest 对象中获取信息并将处理的结果写入context或HttpServletResponse对象,以传递给后面的valve使用。

这些Valve的定义和排序都是通过Spring Bean来配置的,定义文件为pipelines.xml,下面为该文件片断截取:


<bean id="securityValve"
class="org.apache.jetspeed.security.impl.SecurityValveImpl"
init-method="initialize" abstract="false" singleton="true" lazy-init="default"
autowire="default" dependency-check="default">
<constructor-arg>
        <ref bean="org.apache.jetspeed.profiler.Profiler" /> 
    </constructor-arg>
<constructor-arg>
        <ref bean="org.apache.jetspeed.security.UserManager" /> 
    </constructor-arg>
<constructor-arg>
        <ref bean="PortalStatistics" /> 
    </constructor-arg>
</bean>


<bean id="jetspeed-pipeline"
class="org.apache.jetspeed.pipeline.JetspeedPipeline" init-method="initialize"
abstract="false" singleton="true" lazy-init="default" autowire="default"
dependency-check="default">
<constructor-arg>
        <value>JetspeedPipeline</value> 
    </constructor-arg>
    <constructor-arg>
<list>
                 <ref bean="capabilityValve" /> 
                 <ref bean="portalURLValve" /> 
                 <ref bean="securityValve" /> 
                 <ref bean="localizationValve" /> 
                 <ref bean="passwordCredentialValve" /> 
                 <ref bean="loginValidationValve" /> 
                 <ref bean="profilerValve" /> 
                 <ref bean="containerValve" /> 
                 <ref bean="actionValve" /> 
                 <ref bean="DecorationValve" /> 
                 <ref bean="aggregatorValve" /> 
                 <ref bean="cleanUpValve" /> 
            </list>
    </constructor-arg>
</bean>


<bean id="pipeline-map" class="java.util.HashMap" abstract="false"
singleton="true" lazy-init="default" autowire="default"
dependency-check="default">
<constructor-arg>
        <map>
            <entry key="/portlet">
                <value>portlet-pipeline</value> 
            </entry>
            <entry key="/portal">
                <value>jetspeed-pipeline</value> 
            </entry>
            <entry key="/ajaxapi">
                <value>ajax-pipeline</value> 
            </entry>
            <entry key="/login">
                <value>jetspeed-pipeline</value> 
            </entry>
            <entry key="/fileserver">
                <value>fileserver-pipeline</value> 
            </entry>
            <entry key="/desktop">
                <value>desktop-pipeline</value> 
            </entry>
            <entry key="/action">
                <value>desktop-action-pipeline</value> 
            </entry>
        </map>
    </constructor-arg>
</bean>

上面表格第一行定义了Security Valve,第二行定义了名为JetspeedPipeline的一个Pipeline,第三行定义了这些Pipeline对应的URL Pattern。门户开发者可以很容易的定义自己特有的Pipeline Valve(只需要实现org.apache.jetspeed.pipeline.valve.Valve接口,并在这个xml文件中定义它),或者改变现有Pipeline中valve执行顺序,甚至创建新的Pipeline,并把它映射到某个URL Pattern上。但这里需要注意的是新URL Pattern映射不能跟现有的重复,这是因为映射是通过Map数据结构实现。让我们再把注意力返回到图六,接下来的Container处理由一个竖线分隔,这是由于在Pipeline的aggregatorValve发生了cross context dispatch。需要注意的是Valve的实现类并不是Thread Safe的,开发者必须自己管理共享变量,最好就是不要定义对象成员变量,全部使用方法内部变量。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<

上一页 1 2 3 4 56 7 8 下一页


上一篇:LVM 五分钟教程   下一篇:深入Linux PAM 体系结构

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
·IP安全加密 IPSec安全技术全面接触
·黑客高级技巧 Linux后门技术及实践
·LINUX2.4.x网络安全框架
·分级防御对Linux服务器的攻击
·基于Linux开发的FireboxⅡFastVPN
·十项Linux安全管理技巧经验总结
·高级Linux安全管理技巧
·发现Linux压缩格式漏洞 达第二最危险级别
·Unix和Linux下的Acrobat Reader 5受攻击
·Linux操作系统下防垃圾邮件基本功
推荐文章
·轻松实现 Linux下的互联网过滤功能
·基于FreeBSD5.4全能服务器安装v1.01
·为Linux操作系统安装套件强化系统安
·Linux 集群大全,哪种适合您?
·基于Linux的网络安全策略和保护措施
·Syslog监视Linux登录用户保障系统安
·铲除病毒攻击两大威胁 走近Linux防
·怎么样检测和重启Apache和Lighttpd
精彩文章
·利用capability特征加强Linux系统安
·关于Linux网络安全的内在限制
·怎么样建立安全的ProFTPD应用经验谈
·玩家共享--浅谈Linux系统安全机制
·Linux系统中如何用防火墙抵挡黑客攻
·剖析Linux病毒
·Mac和Linux很少遭到病毒攻击为何故
·深入Linux PAM 体系结构
·Linux操作系统用户口令安全恢复方法
·操作系统安全防护之Linux系统篇
·基于LINUX蜜网(Honeynet)的防御系统
·为Linux加防火墙:APF的安装与设置
·Linux系统中防御垃圾邮件的方法
·重新思考安全含义—让Linux系统更安
·怎么样强制定期更改Linux密码
·Linux系统利用SSH远程控制安全问题
·Linux系统服务器的安全小技巧汇总
·实用Linux用户账户清洁和安全方法
·关于自由软件与信息安全的关系探讨
·关于Linux系统安全管理技巧详解
·深度探索 OpenBSD
·Netfilter/Iptables的防火墙功能介
·轻松实现 Linux下的互联网过滤功能
·Linux系统中的虚拟机可能会削弱安全
·多种分割WebServer日志的方法
·专家:怎么样监控和保护Linux下进程
Power by linux-cn.com 粤ICP备05006655号