note1.Webx 2.x概貌

对于JSP/Servlet应用,只要查看Web.xml文件就知道入口点了。

可以看到web.xml中主要有几个东西:

1.context(声明应用范围内的初始化参数)

代码中主要应该用到三个参数:

loggingRoot:应用日志输出路径
initAllServices:是否初始化所有服务,指定框架是否启动时初始化所有组件
webx.components:目前这个web应用中有哪些组件(更喜欢称其为组件而不是car),以exodus2为例(以下都以这个应哟你为例),exodus2中初始化了以下几个组件home,member,company,offer,misc,ims,product,bizexpress,message,aso,domain,smarket,album,winport
default.component:默认组件,其实就是访问是路径位http://address/*.htm这种路径映射到这个组件路径下,目前把home设置位默认组件
eatException:

2.filter(过滤器)

目前有以下几个过滤器:
com.alibaba.china.common.filter.dm.DataMiningFilter:记录页面响应时间
com.alibaba.webx.filter.rundata.RunDataFilter:session cookies相关过滤器
com.alibaba.webx.filter.logging.SetLoggingContextFilter:日志设置过滤器
com.alibaba.exodus2.monitor.inspect.IPFilter:监控过滤器

3.listener(监听器)

目前应用中有两个监听器:
com.alibaba.webx.WebxControllerListener:webx监听器,在接下来会主要分析的一部分代码
com.alibaba.comsat.collector.launch.ComsatListener:监控相关的

4.Servlet(映射页面请求路径)

目前应用中有以下几个servlet:
com.alibaba.webx.WebxControllerServlet:这个是整个框架的基础,所有代码都是通过该控制器去调用对应的代码,非常重要,也是本系列主要介绍的内容
com.alibaba.china.common.servlet.HelloServlet:主要用监控检查,看看应用是否正常
org.apache.axis.transport.http.AxisServlet:提供web services,目前没有应该起来
com.alibaba.exodus2.web.webservice.axis.transport.AliTalkAxisServlet:同上
com.alibaba.exodus2.monitor.inspect.InspectorServlet:页面监控相关的,主要监控外部应用

4.welcome-file-list(默认主页调用页面)

5.error-pag(使得在返回特定HTTP状态代码时,或者特定类型的异常被抛出时,能够制定将要显示的页面)

目前对以下几个http code,跳转到错误页面。
40?:400,401,403,404,405,407,408,414,415
50?:500,501,503

webxcontrolservlet初始化过程(概要初始化描述):
--webxcontrollerServlet
1.AbstractWebxControllerServlet.init():调用2进行初始化信息
2.AbstractWebxControllerServlet.configure():初始化webx框架
3.doGet()/doPost():获取rundata对象,把请求处理分成以下几个步骤
4.beforeRequest():请求预处理,目前只设置ThreadContextService
5.handleRequest():这个请求的关键处理流程,获取pipeline并调用
---pipeline
6.pipeline.invoke():调用pipeline过滤一层曾valve进行处理
7.pipeline.setSetp():设置调用点,从那个地方开始调用
8.pipeline.invokeNext():循环调用valve
9.valve.invoke():调用具体的valve代码进行执行,返回给ValveForward
10.valveForward.invoke():指定要跳转的URL,并把内容带过去,有两种方式,一种是BreadkPipeline.invoke()进行正常的pipeline结束,另一种方式调用GotoLabel.invoke()
11.gotoLabel.invoke():进行内部跳转,调用pipeline再执行一次内部请求
12.pipeline.gotoLabel():设置pipeline标记
13.pipeline.invokeNext():进行二次请求,10-13可以进行多次内部跳转请求,退出点在BreadkPipeline.invoke(),也有可能造成内部服务器死循环
--valve
14.invoke有很多种,在pipeline初始化时这些valve对象就产生了;每个valve都有一个invoke方法作为执行入口。TryCatchFinallyValv和其他valve有点区别,TryCatchFinallyValvee会有valve相关的上下文内容,传递到catch或者finally中,主要用来捕获消息传递给catch活finally中的valve。15.performScreenTemplateValve.invoke():获取screen Module
16.performScreenTemplateValve.setModuleInfo():设置screen Module,让18可以调用执行
17.performScreenTemplateValve.setContentType():设置影响HTTP ContentType类型
18.performScreenTemplateValve.performScreenModule():调用screen module方法,执行module.execute():这个是screen代码中主要编写的地方
19.performScreenTemplateValve.performLayoutModule():调用layout module方法,执行module.execute():这个是layout代码中主要编写的地方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值