- 浏览: 2662606 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
以Template渲染服务为例子
services是root扩展点,template是对services的捐献,同时template的element也是扩展点,namespace:http://www.alibaba.com/schema/services/template/engines,详见template.xsd:
template的属性:searchExtensions等。
template的elements:global-macros, plugins。
global-macros是一个list sting
plugins又是一个扩展点.vm-plugins是其中的一种捐献。
对应的xsd描述:
其中的
定义了element的名字和类型的映射关系,下面是type的描述:
xsd:sequence表示list,xsd:any表示所有满足namespace="http://www.alibaba.com/schema/services/template/engines/velocity/plugins"都行。其实就是定义了一处扩展点。
二.VelocityEngineDefinitionParser类
再来看看VelocityEngineDefinitionParser如何来parser。
VelocityEngineDefinitionParser 继承了 AbstractSingleBeanDefinitionParser,但是要注意如果是顶级service要继承AbstractNamedBeanDefinitionParser,实现其getDefaultName方法。否则会抛出异常。
谢谢支持,只不过是胡乱记录自己看的。
<!-- Template渲染服务。 --> <services:template xmlns="http://www.alibaba.com/schema/services/template/engines" searchExtensions="true"> <velocity-engine templateEncoding="GBK" strictReference="false" path="/templates/${component}"> <global-macros> <name>global/*.vm</name> </global-macros> <plugins> <vm-plugins:escape-support defaultEscape="html"> <vm-plugins:noescape> <vm-plugins:if-matches pattern="^control\." /> <vm-plugins:if-matches pattern="^screen_placeholder" /> <vm-plugins:if-matches pattern="^stringEscapeUtil\.escape" /> <vm-plugins:if-matches pattern="^csrfToken\.(get)?hiddenField" /> </vm-plugins:noescape> </vm-plugins:escape-support> </plugins> </velocity-engine> </services:template>
services是root扩展点,template是对services的捐献,同时template的element也是扩展点,namespace:http://www.alibaba.com/schema/services/template/engines,详见template.xsd:
<xsd:complexType name="TemplateServiceType"> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element name="template-mapping" type="TemplateServiceEngineMappingType" minOccurs="0" maxOccurs="unbounded"> <xsd:annotation> <xsd:documentation><![CDATA[ 将模板引擎和模板名后缀关联起来。 ]]></xsd:documentation> </xsd:annotation> </xsd:element> <xsd:any namespace="http://www.alibaba.com/schema/services/template/engines" /> </xsd:choice> <xsd:attribute name="defaultExtension" type="xsd:string" /> <xsd:attribute name="searchExtensions" type="springext:booleanOrPlaceholder" /> <xsd:attribute name="searchLocalizedTemplates" type="springext:booleanOrPlaceholder" /> <xsd:attribute name="cacheEnabled" type="springext:booleanOrPlaceholder" /> <xsd:attributeGroup ref="springext:identifiedTypeAttributeSubset" /> </xsd:complexType> <xsd:complexType name="TemplateServiceEngineMappingType"> <xsd:attribute name="extension" type="xsd:string" use="required" /> <xsd:attribute name="engine" type="xsd:string" use="required" /> </xsd:complexType>
template的属性:searchExtensions等。
template的elements:global-macros, plugins。
global-macros是一个list sting
plugins又是一个扩展点.vm-plugins是其中的一种捐献。
对应的xsd描述:
<xsd:complexType name="VelocityTemplateEngineType"> <xsd:complexContent> <xsd:extension base="beans:identifiedType"> <xsd:all> <xsd:element name="global-macros" type="VelocityGlobalMacrosType" minOccurs="0"> <xsd:annotation> <xsd:documentation><![CDATA[ 装载全局宏(相对于path路径),可使用通配符。 ]]></xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="plugins" type="VelocityPluginsType" minOccurs="0"> <xsd:annotation> <xsd:documentation><![CDATA[ Velocity插件和事件处理器。 ]]></xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="advanced-properties" type="VelocityPropertiesType" minOccurs="0"> <xsd:annotation> <xsd:documentation><![CDATA[ Velocity高级设置,参见velocity文档: (http://velocity.apache.org/engine/releases/velocity-1.6.2/developer-guide.html#Velocity_Configuration_Keys_and_Values) 和默认配置文件:org/apache/velocity/runtime/defaults/velocity.properties。 ]]></xsd:documentation> </xsd:annotation> </xsd:element> </xsd:all> <xsd:attribute name="path" type="xsd:string" default="/templates" /> <xsd:attribute name="templateEncoding" type="xsd:string" default="UTF-8" /> <xsd:attribute name="cacheEnabled" type="springext:booleanOrPlaceholder" default="true" /> <xsd:attribute name="modificationCheckInterval" type="springext:integerOrPlaceholder" default="2" /> <xsd:attribute name="strictReference" type="springext:booleanOrPlaceholder" default="true" /> </xsd:extension> </xsd:complexContent> </xsd:complexType>
其中的
<xsd:element name="global-macros" type="VelocityGlobalMacrosType" minOccurs="0"> <xsd:element name="plugins" type="VelocityPluginsType" minOccurs="0">
定义了element的名字和类型的映射关系,下面是type的描述:
<xsd:complexType name="VelocityGlobalMacrosType"> <xsd:sequence> <xsd:element name="name" type="xsd:string" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="VelocityPluginsType"> <xsd:sequence> <xsd:any namespace="http://www.alibaba.com/schema/services/template/engines/velocity/plugins" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType>
xsd:sequence表示list,xsd:any表示所有满足namespace="http://www.alibaba.com/schema/services/template/engines/velocity/plugins"都行。其实就是定义了一处扩展点。
二.VelocityEngineDefinitionParser类
再来看看VelocityEngineDefinitionParser如何来parser。
VelocityEngineDefinitionParser 继承了 AbstractSingleBeanDefinitionParser,但是要注意如果是顶级service要继承AbstractNamedBeanDefinitionParser,实现其getDefaultName方法。否则会抛出异常。
评论
2 楼
san_yun
2011-09-26
singleant 写道
楼主说得好!up!
谢谢支持,只不过是胡乱记录自己看的。
1 楼
singleant
2011-09-26
楼主说得好!up!
发表评论
-
Session失效的几种方法
2012-03-08 12:37 1553Session失效的几种方法 (1)在主页面或者公共页面中加入 ... -
struts2和webx参数注入比较
2012-02-27 16:09 1050struts2 使用ognl 通过setter注入参数 ... -
webx3 ajax实践
2012-02-03 16:31 4236webx3处理ajax很简单,需要注意的是别忘了家cache- ... -
webx3 FQA
2011-11-19 23:07 17421. 在webx3的control类里面无法重定向: navi ... -
web3 URLBroker
2011-11-19 20:07 1100http://www.3renyou.com:8080/pla ... -
webx session读写
2011-10-25 11:24 1054画了两张图 -
webx3问题解决
2011-10-15 23:02 11041.404错误无法找到设置的error.vm。 原因err ... -
webx3的对象树
2011-10-15 22:34 905WebxComponents { parentContex ... -
webx pipeline
2011-09-30 15:26 1510pipeline 1. analyzeURL(分析URL的目 ... -
webx3核心配置
2011-09-30 12:29 2395Webx3 服务配置 1 RequestContext < ... -
webx
2011-06-14 21:06 1568webx初始化: listener: WebxCon ...
相关推荐
它引入了XML Schema的概念,通过扩展点(Configuration Point)和捐献(Contribution)机制实现了对Spring配置文件的自动化处理,大大减轻了开发者的负担。 - **WebxFramework**:这部分主要介绍了Webx框架的初始化过程...
本指南将深入探讨Webx3框架的核心特性和使用方法,结合《Webx3_Guide_Book.pdf》的详细文档,我们将全面解析以下几个关键知识点: 1. **框架架构**:Webx3 的架构设计基于组件化思想,允许开发者灵活地选择和配置...
2.2.2. 扩展点,Configuration Point ....................................................... 17 2.2.3. 捐献,Contribution ...................................................................... 17 ...
7. **AOP(面向切面编程)**:Webx利用AOP实现横切关注点的解耦,如日志记录、事务管理等,让核心业务代码更专注于业务逻辑。 Webx框架的特性还包括: - **MVC架构**:Webx遵循经典的MVC设计模式,使代码结构清晰...
- **扩展点,ConfigurationPoint**:这是一种允许开发者自定义配置的机制,通过定义特定的扩展点,开发者可以在不修改框架源代码的情况下对框架的行为进行调整。 - **捐献,Contribution**:指的是开发者可以通过...
SpringExt模块的原理非常丰富,涉及到了XML Schema的秘密,扩展点ConfigurationPoint的定义,捐献Contribution的概念以及组件和包的管理。SpringExt的引入大大增强了Spring框架的功能和灵活性。 WebxFramework部分...
综合以上信息,Webx总结可能涵盖了以下几个关键知识点: 1. **Webx框架概述**:介绍Webx的基本架构、设计原则以及其在企业级应用中的优势。 2. **源码解析**:深入剖析Webx的核心组件,如Request Context,帮助...
提到使用Webx而不是其他框架的理由,关键点在于Webx的成熟可靠性和良好的开放性和扩展性。成熟可靠性意味着Webx已经经过了时间的考验,稳定且能够应对各种开发场景;开放和扩展性则是指Webx提供了灵活的接口供开发者...
- **SpringExtSchema**:扩展Spring的Schema,提供更高级别的配置选项,例如通过扩展点和贡献点机制。 ##### **2.2 SpringExt原理** - **XMLSchema中的秘密**:SpringExt通过定义自己的Schema来实现对Spring配置的...
通过结合提供的博客文章和代码,我们将深入探讨以下几个核心知识点: 1. **WebX框架概述**: WebX是一个组件化的MVC(Model-View-Controller)框架,它提供了丰富的功能,如数据持久化、事务管理、权限控制等。它...
此外,Webx提供了丰富的扩展点和插件机制,允许开发者自定义行为,满足特定业务需求。 总的来说,阿里巴巴的Webx框架是一个强大且灵活的J2EE开发工具,它的模块化设计、Car组件化打包、URL管理和MVC架构,都极大地...
- **基础框架**:WEBX3.0的基础构建于Spring框架之上,通过提供一系列扩展点来实现高度定制化的开发。 - **层次化**:框架被划分为多个层次,每个层次负责不同的功能模块,这种设计使得开发者可以按需选择使用哪些...
Webx框架的入口点是WebxControllerServlet,负责处理来自Web访问者的请求。框架的核心是ServicePipeline,它负责初始化和服务注入。在Web层,Form服务通过Form.xml进行配置,包含了表单信息、验证规则和错误处理...
3. **对象-关系映射(ORM)模式**:ORM技术将对象层次结构映射到关系型数据库结构。通过ORM,开发者可以专注于对象操作,而框架会自动处理SQL生成和执行。虽然ORM可能会带来额外的执行开销,但其优化潜力和减少的...
3. **MVC架构**:Webx遵循经典的Model-View-Controller(模型-视图-控制器)架构,分离了业务逻辑、数据处理和用户界面,有利于团队协作和代码解耦。 4. **事务管理**:Webx提供了强大的事务管理机制,能够确保在...
3. **系统扩展性**:实施微服务架构,提高系统的灵活性和可扩展性。 #### 七、总结 淘宝的技术架构随着业务的增长而不断进化,从最初的LAMP架构到后来的Java三层架构,再到引入微服务等现代技术,始终以满足“四高...
以下是相关知识点的详细说明: 1. **预备知识与环境设置**: 开始前,开发者需要确保已经安装了必要的软件,并且熟悉了基础的Web应用创建流程。这包括阅读《新人指南》以了解软件安装,以及阅读《创建简单的WEB...
WebX的核心设计理念是通过组件化的方式,使得开发者能够灵活地组合和扩展应用的功能。在这个"car-web" demo中,我们可以学习到如何利用WebX框架来处理HTTP请求,展示汽车相关的数据,并实现用户交互。 Maven是Java...