# bootstrap.properties
SpringCloud Nacos作为配置中心时,配置Nacos Server地址,格式如下:
spring.cloud.nacos.config.enabled=true
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
其属性描述为:
Config Item | Nullable | Default Value | Description |
---|---|---|---|
spring.cloud.nacos.config.enabled | false | true | 是否启动nacos配置中心 |
spring.cloud.nacos.config.server-addr | false | 127.0.0.1:8848 | Nacos Server地址 |
# application.properties
Config Item | Nullable | Default Value | Description |
---|---|---|---|
eos.application.sys-key | true | 系统凭证, 用于统一系统内应用之间互调的凭证 | |
eos.application.sys-code | false | 系统编码, 需要和Governor上定义的系统编码保持一致 | |
eos.application.ip-addr | true | ${spring.cloud.client.ip-address} | 应用运行的IP地址 |
eos.application.app-inst-grp-code | true | default | 应用实例组, 同时表示一个Apollo上的集群 |
eos.application.app-inst-id | true | IdUtils.getDefaultInstanceId(environment) | 应用实例ID |
eos.application.depend-app-codes | true | 要依赖的其他应用编码 | |
eos.logging.inbound.enabled | true | false | 是否记录HTTP入站请求 |
eos.logging.inbound.include-pathes | true | /** | 指定要记录日志的路径, 路径匹配使用是Spring的AntPathMatcher |
eos.logging.inbound.exclude-pathes | true | /v2/api-doc, /swagger-resources, /swagger-ui.html, /actuator/, /druid/, //*.ico, //.js, /**/.css, //*.html, //.png, /**/.img, /**/*.image | 指定在include-pathes下,不需要记录日志的路径 |
eos.logging.inbound.hh-enabled | true | false | 是否记录HTTP头 |
eos.logging.inbound.hb-enabled | true | false | 是否记录HTTP体 |
eos.logging.inbound.hb-log-ctypes | true | application/json, application/x-www-form-urlencoded, text/plain | 指定要记录HTTP体的Content-Type |
eos.logging.outbound.enabled | true | false | 是否记录HTTP出站请求 |
eos.logging.outbound.include-pathes | true | /** | 指定要记录日志的路径, 路径匹配使用是Spring的AntPathMatcher |
eos.logging.outbound.exclude-pathes | true | /v2/api-doc, /swagger-resources, /swagger-ui.html, /actuator/, /druid/, //*.ico, //.js, /**/.css, //*.html, //.png, /**/.img, /**/*.image | 指定在include-pathes下,不需要记录日志的路径 |
eos.logging.outbound.hh-enabled | true | false | 是否记录HTTP头 |
eos.logging.outbound.hb-enabled | true | false | 是否记录HTTP体 |
eos.logging.outbound.hb-log-ctypes | true | application/json, application/x-www-form-urlencoded, text/plain | 指定要记录HTTP体的Content-Type |
eos.logging.hystrix.enabled | true | true | 是否记录Hystrix的执行 |
apollo.bootstrap.enabled | true | false | 是否使用Apollo配置客户端 |
apollo.bootstrap.namespaces | true | eos,application,SYS.$SYS_CODE | Apollo的namespace名称, 对于于Governor上的实例配置组或系统配置组 |
apollo.env | true | dev | Apollo配置中心环境名称 |
apollo.meta | true | Apollo配置中心的config-service的地址 | |
apollo.cacheDir | true | ./eos/tmp/apollo | Apollo的本地文件系统缓存 |
apollo.autoUpdateInjectedSpringProperties | true | true | Apollo是否启动Spring Placeholder属性值的自动更新 |
eos.accesscontrol.enabled | true | true | 是否启用访问控制, 包括: 限流, api下线, 请求检查 |
eos.accesscontrol.request-check.enabled | true | false | 是否启用请求检查, 启动请求检查的话, 会拒绝非本系统内的调用 |
eos.accesscontrol.request-check.include-pathes | true | /** | 指定要做请求检查的路径, 路径匹配使用是Spring的AntPathMatcher |
eos.accesscontrol.request-check.exclude-pathes | true | /v2/api-doc, /swagger-resources, /swagger-ui.html, /actuator/, /druid/, //*.ico, //.js, /**/.css, //*.html, //.png, /**/.img, /**/*.image | 指定在include-pathes下,不需要做请求检查的路径 |
eos.accesscontrol.request-check.blacklists | true | 请求检查黑名单, 满足条件的直接拒绝访问. 支持指定IP和service名称, service要以svc://开头, 黑名单优先于白名单 | |
eos.accesscontrol.request-check.whitelists | true | localhost, 127.0.0.1, 0:0:0:0:0:0:0:1 | 请求检查白名单, 满足条件的直接允许访问. 支持指定IP和service名称, service要以svc://开头 |
eos.accesscontrol.rate-limiting.permits-per-second | true | 0 | 限流(每秒的访问量), 小于等于0表示不限制 |
eos.webclient.enabled | true | true | 是否启用web客户端 |
eos.webclient.resttemplate.hystrix.enabled | true | true | 是否对RestTemplate使用Hystrix |
eos.webclient.target-key.[$SVC_HOST] | true | Map结构, key是调用服务的host(服务名或者ip), value可以是任何值, value会自动添加到HTTP头(X-EOS-TargetKey), 可以根据该信息做流量策略的导流 | |
eos.springfox.enabled | true | true | 是否使用Springfox |
eos.trace.enabled | true | true | 是否启用跟踪 |
eos.trace.biz (opens new window)-trace-id-alias | true | 指定业务trace id的别名, SDK会根据别名从HttpHeader取值 | |
eos.app-util.exception-controller-advice-enabled | true | true | 是否启用异常拦截并统一处理 |
eos.api-access-stat.enabled | true | true | 是否启用API访问统计 |
alpha.cluster.address | true | 指定分布式事务的Server的地址 | |
omega.enabled | true | false | 是否启用分布式事务的客户端,如果设置了“alpha.cluster.address”,该值默认就会变成true |
eos.cache.mode | true | redis | 指定所有的EOS的ICache的实现方式,值可以为:redis、map使用Reids作为实现的其他条件:pom.xml里需要有spring-boot-starter-data-redis依赖,并且application.properties需要配置Redis相关的配置,Redis相关的配置是SpringBoot原生支持的配置如果其他条件不满足,会自动改为map实现 |
eos.cache.$CACHE_NAME.mode | true | redis | 指定某个的EOS的ICache的实现方式 |
eos.admin.port | true | 6200 | EOS应用的管理端口(MBean的端口) |
eos.load.xsd.async | true | false | EOS应用启动时,是否采用异步加载xsd |
eos.beans-definition-mode | true | annotation | SpringBean定义的方式,值可以为:annotation、xmlxml即是EOS7的定义方式,通过在xml文件里定义Bean,这种方式定义的Bean不支持在IDE使用SpringBean图元调用 |
eos.override.eos-external-config | true | false | 启动时是否强制将内部的eos-server目录复制到外部目录,不强制的情况下,会比较外部目录下文件的时间戳是否旧于内部的目录,如果旧于,才会复制 |
eos.export.depend-api-contributions | true | 指定需要暴露依赖的API构件包名称, 多个名称之间用','分隔, 名称支持带'*',被暴露的API构件包里的EOS服务可以通过swagger在线看到 |
eos.*
的所有可配置项, 可以通过STS (opens new window)的代码提示查看
支持动态刷新的配置项
eos.logging.inbound.*
http的入站请求日志记录配置eos.logging.outbound.*
http的出站请求日志记录配置eos.accesscontrol.*
访问控制相关配置
支持动态刷新的配置项, 可以在运行期通过配置中心修改
# application-nacos.properties
SpringCloud Nacos作为注册中心时,配置Nacos Server地址,格式如下:
spring.cloud.nacos.discovery.enabled=true
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
其属性描述为:
Config Item | Nullable | Default Value | Description |
---|---|---|---|
spring.cloud.nacos.discovery.enabled | false | true | 是否启动nacos注册中心 |
spring.cloud.nacos.discovery.server-addr | false | 127.0.0.1:8848 | Nacos Server地址 |
# user-config.xml
用户配置,其格式按三段式进行配置,格式如下:
<module name="moduleName">
<group name="group name">
<configValue key="key">value</configValue>
</group>
</module>
# 数据源参数配置
数据源参数配置,对应module名称为DataSource。
Group名称为数据源的别名,系统中必须包含一个别名为default的数据源。系统支持两种数据源的配置格式,C3P0数据源和JNDI数据源。C3P0数据源使用开源的数据库连接池软件,JNDI数据源使用应用服务器提供的数据源。
- C3P0各项值配置如下:
Key名称 | 含义 |
---|---|
Key名称 | 含义 |
C3p0-DriverClass | 数据库驱动Driver |
C3p0-Url | 数据库连接URL |
C3p0-UserName | 数据库连接用户名 |
C3p0-Password | 数据库连接口令 |
C3p0-PoolSize | 数据库连接池初始大小,取值范围为整数,系统默认值为10 |
C3p0-MaxPoolSize | 数据库连接池最大值,取值范围为整数,系统默认值为50 |
C3p0-MinPoolSize | 数据库连接池最小值,取值范围为整数,系统默认值为10 |
Transaction-Isolation | 事务隔离级别,共有以下几种: |
Database-Type | 数据库类型,支持DB2、Oracle、SQL Server、Informix、Sybase、MySql |
Jdbc-Type | 数据库驱动类型: |
Test-Connect-Sql | 测试连接SQL,与Retry-Connect-Count配合使用,如果Retry-Connect-Count设置值大于0,则取得连接后执行此SQL,如果出错,继续重连 |
Retry-Connect-Count | 连接重试次数,取值范围为整数,负数表示不重连,系统默认值为-1 |
- JNDI数据源各项值配置如下:
Key名称 | 含义 |
---|---|
Jndi-Name | 数据源的JNDI名称 |
Transaction-Isolation | 事务隔离级别,共有以下几种: |
Test-Connect-Sql | 测试连接SQL, 与Retry-Connect-Count配合使用,如果Retry-Connect-Count设置值大于0,则取得连接后执行此SQL,如果出错,继续重连 |
Retry-Connect-Count | 连接重试次数,负数表示不重连,系统默认值为-1 |
# 邮件配置
邮件配置,对应module名称为Email。
Group名称 | 含义 |
---|---|
Default | 配置邮件服务的各项属性 |
各属性定义如下:
Group名称 | Key名称 | 含义 |
---|---|---|
Default | Host | 邮件服务器地址 |
Default | Port | 邮件服务器端口,可选 |
Default | UserName | 邮件用户名,可选 |
Default | Password | 邮件口令,可选 |
# 缓存配置
缓存配置,对应module名称为Cache。 格式如下:
<group name="cache名称">
<configValue key="IsSystemCache">true/false</configValue>
<configValue key="CacheLoader">CacheLoaderImpl</configValue>
<configValue key="ClusterName">ClusterName</configValue>
<configValue key="CacheMode">CacheMode</configValue>
<configValue key="NotifyType">NotifyType</configValue>
</group>
各属性定义如下:
Key名称 | 含义 |
---|---|
Key名称 | 含义 |
IsSystemCache | 是否为系统Cache,取值范围为true:系统缓存,false:用户缓存,系统默认为false。 |
CacheLoader | 缓存数据加载的Loader配置,需要实现接口com.eos.common.cache.ICacheLoader。 对于数据来源于数据库的缓存,需要从数据库加载数据或需要持久化数据的,则需要配置CacheLoader。 |
ClusterName | 默认可以不填写,填写后,所有集群名称相同的缓存都会进行数据同步。对于集群应用,默认不要填写该名称。 |
CacheMode | 缓存模式,共有四种: |
NotifyType | 缓存通知模式,2: MBean通知。系统默认为2。 |
LoadOneBizQName | 加载一条数据的业务逻辑全限定名称,用于数据加载类型为"逻辑流数据加载"时使用。 |
LoadAllBizQName | 加载所有数据的业务逻辑全限定名称,用于数据加载类型为"逻辑流数据加载"时使用。 |
DataEntityQName | 数据实体的全限定名称,用于数据加载类型为"数据实体数据加载"时使用。 |
LoadOneSqlID | 加载一条数据的命名SQL全限定名称,用于数据加载类型为"命名SQL数据加载"时使用。 |
LoadAllSqlID | 加载所有数据的命名SQL全限定名称,用于数据加载类型为"命名SQL数据加载"时使用。 |
DataType | 返回数据类型的全限定名称,可以是一个Java类名称或一个数据实体的全限定名称,用于数据加载类型为"逻辑流数据加载"时使用。 |
PrimaryKeys | 主键列表,多个主键使用半角逗号","分割,"命名SQL数据加载"或"逻辑流数据加载"时使用。 |
DataSourceName | 应用数据源名称,用于数据加载类型为"命名SQL数据加载"或"数据实体数据加载"时使用。 |
IsClustered | 缓存是否支持集群,true表示支持,false表示不支持(即本地缓存),支持集群的缓存之间数据会自动同步。 |
系统默认配置的Cache如下:
Cache名称 | 含义 |
---|---|
CacheForDict | 业务字典Cache |
CacheForUserObject | 在线用户Cache |
# 定时器配置
定时器配置,对应module名称为Schedule,对应Group的名称为Default。
各属性定义如下:
Key名称 | 含义 |
---|---|
IsSchedulerStart | 系统启动时,定时器是否启动,取值范围:true、false。 true:启动,false:不启动。系统默认为true。 |
DataSouceName | 定时器数据配置对应的数据源别名,需要与user-config.xml中的数据源别名对应,系统默认为default。 |
# 业务字典配置
业务字典配置,对应module名称为Dict。
Group名称 | 含义 |
---|---|
Dict-Factory | 业务字典工厂 |
Cache | 业务字典使用的Cache |
各属性定义如下:
Group名称 | Key名称 | 含义 |
---|---|---|
Dict-Factory | EOSBusinDictFactory | 业务字典工厂,需要实现com.eos.server.dict.DictFactory接口,默认为com.eos.server.dict.impl.EOSBusinDictFactory,是EOS提供的默认的从数据库业务字典系统表加载业务字典数据的实现类。 用户可以定义新的实现工厂类,如从xml加载业务字典等,可以增加一个新的Key,来定义新的业务字典加载工厂类。 |
Cache | CacheName | 业务字典使用的缓存名称,与缓存配置中的名称相同,名称是系统默认的,用户不用更改。 |
Cache | UseCache | 业务字典是否使用CacheName指定名称的缓存,取值范围:true、false。 true:使用缓存,false:不使用缓存。系统默认为false。 |
# Http接入配置
Http接入配置,对应module名称为Access-Http。
Group名称 | 含义 |
---|---|
FileUpload | 文件上传配置 |
Encoding | 请求编码格式配置 |
Suspend | XSD加载超时配置 |
Login-Filter | 登陆过滤器设置 |
Accessed-Mode | 接入模式控制 |
各属性定义如下:
Group名称 | Key名称 | 含义 |
---|---|---|
FileUpload | TempDir | 文件上传后的临时目录,默认为upload |
FileUpload | MaxSize | 最大可上传文件的字节数,系统默认为104857600 |
FileUpload | InMemorySize | server在接收上传文件时,在server中使用的缓冲的大小,单位为字节。如果上传文件大于缓冲大小,则会使用临时文件来保存数据,系统默认为10240 |
FileUpload | Exclude | 不可上传文件类型,默认包括exe、java、jsp、html、htm、class、jar |
Encoding | Request | 引擎字符编码,系统默认为UTF-8 |
Suspend | TimeOut | XSD加载超时时间,如果请求时XSD没有加载完毕,等待时间设置,单位为秒 |
Login-Filter | Exclude | 登录验证时不拦截Url,即请求这些URL不要求登录系统 |
Login-Filter | Include | 登录验证时拦截Url,即要请求这些URL时必须要先登录系统 |
Login-Filter | LoginPage | 未登录时跳转页面 |
Accessed-Mode | Portal | 门户(Portal)模式设置,取值范围:true、false |
# 资源验证配置
资源验证配置,对应module名称为Accessed-Resource-Checked,对应Group名称为Provider,在handler-access.xml中会引用此配置进行访问资源的校验。
各属性定义如下:
Key名称 | 含义 |
---|---|
CheckedHandler | 用户自定义资源检查的handler,需要实现接口IAccessedResourceCheckedHandler。 |
ResourceFactory | 用户自定义资源的创建工厂,需要实现接口IAccessedResourceFactory。 |
# 引擎配置
引擎配置,对应module名称为Engine。
Group名称 | 含义 |
---|---|
Pageflow-ErrorPage | 错误页面跳转设置 |
Pageflow-End | 页面流结束图元默认页面设置 |
Asynchronous-Invoke | 异步调用时JMS、线程方式设置 |
各属性定义如下:
Group名称 | Key名称 | 含义 |
---|---|---|
Pageflow-ErrorPage | Page | 页面流执行错误时跳转页面,系统默认为/common/error.jsp |
Pageflow-ErrorPage | ValidateErrorPage | action连线上校验错误,默认页面,系统默认为/common/validateErrors.jsp |
Pageflow-End | DefaultPage | 页面流指定默认结束页面,系统默认为/common/defaultEnd.jsp |
Asynchronous-Invoke | AutoChange | 异步调用时指定是JMS还是线程方式,取值范围:true、false |
# 业务量统计配置
业务量统计配置,对应module名称为Statistic。
Group名称 | 含义 |
---|---|
Bizflow | 逻辑流统计配置 |
Sql | SQL执行统计配置 |
EOSService | EOS服务调用统计配置 |
SpringBean | Spring Bean调用统计配置 |
格式如下:
<group name="group name">
<configValue key="Status">open/close</configValue>
<configValue key="Queue-Length">长度</configValue>
</group>
各属性定义如下:
Key名称 | 含义 |
---|---|
Status | 业务量统计开关,取值范围:open、close。 open:打开业务量统计;close:关闭业务量统计。系统默认为open。 |
Queue-Length | 统计保存数据设置,取值范围[0,1000],如果取值不在该范围内,则采用默认值50。 |
# Session管理配置
Session管理配置,对应module名称为Session-Manage。
Group名称 | 含义 |
---|---|
Managed-User-Object | MUO对象设置,指定MUO对象在Session中的属性名称和对应的数据类型 |
UserLoginCallback | 用户登录操作时回调设置 |
Group Managed-User-Object格式如下:
<group name="Managed-User-Object">
<configValue key="标识">类型</configValue>
</group>
说明
- 只有在Managed-User-Object中设置的标识才能放到MUO对象中,同时设置的值与设定的类型相匹配;
- Managed-User-Object下可以配置多个configValue。
# 虚拟用户配置
虚拟用户配置,对应module名称为Virtual-UserObject。
虚拟用户用于定时器、工作流自动活动、以及portal模式登录时方便跟踪这些活动的发起者是谁。
- server的虚拟用户用在定时器触发调用任务时;
- workflow的虚拟用户用在工作流执行自动活动时;
- portal的虚拟用户用在当http方法模式为门户模式时,用户访问页面时不需要进行登录认证,系统自动创建一个portal虚拟用户。
Group名称 | 含义 |
---|---|
server | Server使用的虚拟用户配置 |
workflow | Server使用的虚拟用户配置 |
portal | portal模式下使用的虚拟用户配置 |
虚拟用户设置格式如下:
<group name="portal">
<configValue key="User-Id"/>
<configValue key="User-Name"/>
<configValue key="User-Email"/>
<configValue key="User-Org-Id"/>
<configValue key="User-Org-Name"/>
<configValue key="User-Real-Name"/>
<configValue key="User-Remote-Ip"/>
</group>
其它属性定义如下:
Key名称 | 含义 |
---|---|
User-Id | 用户ID |
User-Name | 用户名称 |
User-Email | 用户Email |
User-Org-Id | 用户组织机构ID |
User-Org-Name | 用户组织机构名称 |
User-Real-Name | 用户真实名称 |
User-Remote-Ip | 用户调用IP |
# user-local-config.xml
用户本地配置,本地配置是与集群无关的配置,即在一个EOS集群应用中,除了本地化配置外,其他应用配置都会和集群中的每个节点应用中保持一致。
格式按三段式进行配置,格式如下:
<module name="moduleName">
<group name="group name">
<configValue key="key">value</configValue>
</group>
</module>
# 引擎扩展配置
引擎扩展配置,对应module名称为Engine,对应Group的名称为Runtime-Java-Build,设置逻辑流、页面流的编译环境。
各属性定义如下:
Key名称 | 含义 |
---|---|
Class-Path | 编译时使用的Class path以目录形式设置,目录下的所有jar、zip文件加入到编译Class path当中 |
Source-Path | 逻辑流、页面流生成源代码文件以及编译生成class的目录设置,系统默认为temp |
# sys-config.xml
系统配置,其格式按三段式进行配置,格式如下:
<module name="moduleName">
<group name="group name">
<configValue key="key">value</configValue>
</group>
</module>
# 系统默认参数配置
系统默认参数配置,对应module名称为System,Group名称为Default,各项值配置如下:
Group 名称 | Key名称 | 含义 |
---|---|---|
Default | DateTimeFormat | 系统缺省日期时间格式,日期Tag显示时使用,默认格式为yyyy-MM-dd HH:mm:ss |
Default | DateFormat | 系统缺省时间格式,日期Tag显示时使用,默认格式为yyyy-MM-dd |
Default | ThreadPoolCount | 系统缺省线程池大小,异步调用时使用,默认值为10 |
Default | MaxMsgBlockSize | 集群通知时,消息块大小,默认值为200 |
Default | MaxMsgQueueSize | 集群通知时,消息队列大小,默认值为100000 |
Default | TimeoutToProcessMsg | 集群通知时,消息处理的超时时间(单位为毫秒),默认值为400 |
Default | TimeoutToSendMsg | 集群通知时,消息发送超时时间(单位为毫秒),默认值为500 |
# MBean配置
MBean配置,对应module名称为Mbean 系统定义MBean的配置,在系统启动后,会将根据配置生成的管理监控用的MBean实例,放入MBean Server中,用于JMX远程管理监控。
MBean分为管理(manage)、配置(config)、监控(monitor)、其他(other)四类MBean。格式为:
<group name="MBean Name">
<configValue key="Type">config/ management /monitor/other</configValue>
<configValue key="Class"> Config class name</configValue>
<configValue key="Handler"> Handler class name</configValue>
<configValue key="ConfigFileType">config/applog/log/handlerAccess</configValue>
<configValue key="LogFile">log file name</configValue>
</group>
其属性描述为:
属性名称 | 含义 |
---|---|
Group名称 | MBean名称。 |
Type | MBean类型,可以设置config、management、monitor、other四种,分别表示为: |
Class | 实现MBean的类名,除了配置MBean,要求有一个无参构造方法。 |
Handler | 配置MBean特有的,作为其Bean class的构造参数传入,需要实现com.eos.common.config.mbean.IConfigHandler接口。 |
ConfigFileType | 配置文件类型,取值范围有config、applog、log、handlerAccess四种,仅当Type属性为config时有效。 |
LogFile | 日志文件名称,仅当ConfigFileType为applog时使用。 |
系统默认配置的MBean如下:
MBean描述 | Group名称 | 含义 |
---|---|---|
MBean描述 | Group名称 | 含义 |
环境配置MBean | EnvironmentMBean | 对sys-config.xml中Module名称为System的段进行加载 |
运行环境配置MBean | RuntimeMBean | 对sys-config.xml中Module名称为Runtime的段进行加载 |
缓存配置MBean | CacheMBean | 对user-config.xml中Module名称为Cache的段进行加载 |
邮件配置MBean | MailMBean | 对user-config.xml中Module名称为Email的段进行加载 |
服务变量配置MBean | ServiceVariableMBean | 对user-config.xml中Module名称为WsLocation的段进行加载 |
接入MBean | HandlerAccessMBean | 对文件handler-access.xml进行加载 |
定时器配置MBean | ScheduleMBean | 对user-config.xml中Module名称为Schedule的段进行加载 |
登录配置MBean | LoggingMBean | 对sys-config.xml中Module名称为Logging的段进行加载 |
部署日志配置MBean | DeployLoggerMBean | 对日志配置文件log4j-deploy.xml进行加载 |
系统日志配置MBean | SysLoggerMBean | 对日志配置文件log4j-sys.xml进行加载 |
引擎日志配置MBean | EngineLoggerMBean | 对日志配置文件log4j-engine.xml进行加载 |
跟踪日志配置MBean | TraceLoggerMBean | 对日志配置文件log4j-trace.xml进行加载 |
数据源配置MBean | DataSourceMBean | 对user-config.xml中Module名称为DataSource的段进行加载 |
统计信息配置MBean | StatisticParamMBean | 对user-config.xml中Module名称为Statistic的段进行加载 |
连接配置MBean | ConnectionMBean | 对sys-config.xml中Module名称为Connection的段进行加载 |
DAS配置MBean | DasMBean | 对sys-config.xml中Module名称为Das的段进行加载 |
事务管理器配置MBean | TxManagerMBean | 对sys-config.xml中Module名称为TxManager的段进行加载 |
引擎配置MBean | EngineMBean | 对user-config.xml中Module名称为Engine的段进行加载 |
业务字典配置MBean | DictMBean | 对user-config.xml中Module名称为Dict的段进行加载 |
接入配置MBean | HttpAccessMBean | 对user-config.xml中Module名称为Access-Http的段进行加载 |
MUO配置MBean | MUOMBean | 对user-config.xml中Module名称为Session-Manage的段进行加载 |
虚拟用户配置MBean | VirtualUserMBean | 对user-config.xml中Module名称为Virtual-UserObject的段进行加载 |
资源校验配置MBean | AuthorizationMBean | 对user-config.xml中Module名称为Accessed-Resource-Checked的段进行加载 |
定时任务管理器MBean | ScehduleManageMBean | 对ScheduleManager进行管理 |
任务管理MBean | ScheduleTaskFactoryMBean | 对任务进行管理MBean |
触发器MBean | ScheduleTriggerFactoryMBean | 对任务触发器进行管理MBean |
功能增强触发器MBean | EnhancedScheduleTriggerFactoryMBean | 功能增强的触发器管理工具类,支持是否补触发选项 |
数据管理MBean | ContributionMetaDataManagerMBean | 构件包元数据管理MBean |
资源加载管理器MBean | ResourceLoadMBean | 资源加载管理器MBean实现 |
资源更新MBean | ResourceUpdateMBean | 资源更新MBean |
服务注册MBean | ServiceRegisterMBean | 服务注册MBean |
业务字典管理 | DictManagerMBean | 业务字典管理 |
MetaData管理MBean | ApplicationMetaDataManagerMBean | 应用的MetaData管理的MBean |
统计信息工具类MBean | ConnectionStatMBean | 获取连接统计信息的工具类 |
统计信息工具类MBean | StatisticMBean | 获取统计信息工具类 |
在线用户工具类MBean | OnlineUserMBean | 取得在线用户工具类 |
用户工具类MBean | SpecialMethodMBean | 用户工具类 |
业务字典工具类MBean | EOSBusinDictDataLoaderMBean | 取得业务字典工具类 |
集群消息接收MBean | ClusterNotifierMBean | 集群消息接收MBean |
# 构件运行环境配置
构件运行环境配置,对应module名称为Runtime。
Group名称 | 含义 |
---|---|
Loading | 资源加载的设置 |
Monitor | 资源变更的监测 |
各属性定义如下:
Group名称 | Key名称 | 含义 |
---|---|---|
Loading | Lazy | 资源加载时懒加载支持,如逻辑流、页面流等资源支持懒加载,在真正使用时进行编译。 true:懒加载,false:不懒加载,系统默认为true。说明懒加载是系统启动时不加载,资源被访问时才加载资源。 |
Monitor | Interval | 资源变更监听的间隔,取值范围为整数,如为负数,表示不启动资源变更监听,系统默认为-1。 如构件包的资源如逻辑流修改后被复制到构件包目录下,经过资源变更设置的间隔后被监听到修改,会重新加载资源。 |
Monitor | Exclude | 资源监听的排除类型列表,指定类型的资源监听器不处理,值可以指定文件或者文件夹。 文件类型的指定方式:*.文件扩展名 目录指定方式:直接目录名称 多个文件、目录中间以|分隔,系统默认指定class文件不监听。 |
# 日志上下文记录配置
日志上下文记录配置,对应module名称为Logging。
Group名称 | 含义 |
---|---|
IsPrintContext | 日志中是否记录上下文 |
各属性定义如下:
Group 名称 | Key名称 | 含义 |
---|---|---|
IsPrintContext | SysLogger | 系统日志中记录上下文标志。取值范围为true:记录,false:不记录,系统默认为false。 |
IsPrintContext | EngineLogger | 引擎日志中记录上下文标志。取值范围为true:记录,false:不记录,系统默认为false。 |
# 连接监控配置
连接监控配置,对应module名称为Connection。
Group名称 | 含义 |
---|---|
Monitor | 对连接的监控配置 |
各属性定义如下:
Group名称 | Key名称 | 含义 |
---|---|---|
Monitor | UnclosedConn | 记录未关闭连接,取值范围为true:记录,false:不记录,系统默认为ture。 |
Monitor | StackConn | 记录连接调用栈数,取值范围为true:记录,false:不记录,系统默认为false。 |
Monitor | UnclosedStatement | 记录未关闭Statement,取值范围为true:记录,false:不记录,系统默认为ture。 |
Monitor | StackStatement | 记录Statement调用栈,取值范围为true:记录,false:不记录,系统默认为false。 |
Monitor | UnclosedResultSet | 记录未关闭结果集,取值范围为true:记录,false:不记录,系统默认为ture。 |
Monitor | StackResultSet | 记录结果集调用栈,取值范围为true:记录,false:不记录,系统默认为false。 |
Monitor | LogSqlWhenTimeout | SQL执行时间超过指定值时记录系统日志,取值范围为整数,单位为毫秒,系统默认为1000毫秒。 |
Monitor | IsLogActiveConnNum | 是否记录当前活动连接条数取,取值范围为true:记录,false:不记录,系统默认为false。 |
Monitor | IsLogSqlExcTimes | 是否记录SQL执行次数,取值范围为true:记录,false:不记录,系统默认为false。 |
Monitor | IsLogSqlTime | 是否记录SQL执行时间,取值范围为true:记录,false:不记录,系统默认为false。 |
# 引擎监控配置
引擎监控配置,对应module名称为Engine。
Group 名称 | 含义 |
---|---|
Monitor | Pojo调用时超时设置 |
各属性定义如下:
Key名称 | 含义 |
---|---|
LogPojoWhenTimeout | Pojo调用时超时设置,如果超过设定值,则会记录系统日志,单位为毫秒,系统默认为4000ms。 |
# 事务管理器配置
事务管理器配置,对应module名称为TxManager。
Group 名称 | 含义 |
---|---|
Group 名称 | 含义 |
Default | 系统默认事务管理器,对于Tomcat应用服务器使用 |
Jboss | Jboss应用服务器事务管理器配置 |
Weblogic | Weblogic应用服务器事务管理器配置 |
Websphere | Webphere应用服务器事务管理器配置 |
格式为:
<group name="group Name">
<configValue key="Provider">TransactionManagerProvider类全称</configValue>
<configValue key="TransactionManager">TransactionManagerProvider JNDI名称</configValue>
<configValue key="Propagation">事务传播方式</configValue>
<configValue key="Isolation">事务隔离级别</configValue>
</group>
各属性定义如下:
Key名称 | 含义 |
---|---|
Provider | 事务管理器提供者,需要实现com.primeton.ext.common.transaction.ITransactionManagerProvider接口。 |
TransactionManager | 事务管理器JNDI名称,仅对Jboss、Weblogic、Websphere有效。 |
Propagation | 事务传播方式,共有以下几种: |
Isolation | 事务隔离级别,共有以下几种: |
# DAS配置
DAS配置,对应module名称为Das。
Group名称 | 含义 |
---|---|
Hibernate | 通过Hibernate进行数据库操作参数设置 |
PoolSize | 主键缓存配置 |
Lob | 大字段配置 |
ResultSet | 结果集配置 |
ResultSetLog | 结果集日志配置 |
各属性定义如下:
Group名称 | Key名称 | 含义 |
---|---|---|
Hibernate | ShowSql | 是否显示SQL,取值范围为true:显示,false:不显示,系统默认为false。 |
Hibernate | UseScrollableResultSet | 是否使用ScrollableResultSet,取值范围为true:使用,false:不使用,系统默认为true。 |
Hibernate | BatchSize | 批处理提交实体个数,取值范围为整数,系统默认为5。 |
Hibernate | FetchSize | 读取数据时每次从数据库中取出的记录条数,取值范围为整数,系统默认为10。 |
PoolSize | PoolSize | 主键缓存数量(步长),取值范围为整数,系统默认为20。 |
Lob | TempDir | Lob字段保存的默认目录,系统默认为lob_temp。 |
ResultSet | ResultSetLimit | 限制结果集长度,超过指定长度的查询结果不转变为实体,取值范围为整数,-1为不限制长度,系统默认为-1。说明如果查询返回海量的结果集,建议设置一个最大限制,否则会耗尽服务器资源。 |
ResultSet | ThrowException | 结果集超长时的动作,取值范围为true:抛出异常,false:不抛出异常,系统默认为false。 |
ResultSetLog | Count | 结果集超过指定长度,则记录警告信息,取值范围为整数,系统默认为2000。 |
# handler-contribution.xml
构件包加载时执行的启动类配置,在构件包加载(load)时、加载完成(loadFinished)时、卸载(unLoad)时执行特殊的动作,其格式为:
<handlers>
<handler class="class Name"/>
...
</handlers>
其属性描述为:
属性名称 | 含义 |
---|---|
handlers | 可以有多个handler节点,不同的handler执行顺序按照配置文件中定义的顺序执行 |
handler | 具体的拦截器配置项 |
class | 实现了接口com.eos.runtime.resource.IContributionListener的类的全名称 |
# handler-engine.xml
引擎调用时的拦截器配置,在调用逻辑流或者页面流时执行,其格式如下:
<handles>
<handle
name="aName"
match-pattern="*"
handle-class="class name"
type="pageflow,businesslogic,*"
nodeType="node Type"
nodeID="node ID"/>
</handles>
其属性描述为:
属性名称 | 含义 |
---|---|
handles | 可以有多个handler节点,不同的handle执行顺序按照配置文件中定义的顺序执行。 |
handle | 具体的拦截器配置项。 |
name | Handler名称。 |
match-pattern | 拦截对象的匹配规则,表示对哪些资源的名称进行匹配,支持通配符*,并且最多只能有一个*。 |
handle-class | 拦截器类全称,需要实现接口com.eos.engine.core.IHandler。 |
type | 拦截器作用类型,可以为pageflow,businesslogic,*。 |
nodeType | 表示拦截器拦截图元的类型,可以为start,end,assign,invoke,switch,forEachStart,forEachEnd,whileStart,whileEnd,throw,subprocess,transactionBegin,transactionCommit,transactionRollback,subPageFlow,。 其中""表示对所有的图元进行拦截,可以不设置。 |
nodeID | 按照图元的ID进行精确的拦截,拦截多个图元ID的时候,用英文逗号","分开。 "*"表示对所有的图元都进行拦截。 |
系统默认的拦截器配置说明如下:
拦截器类描述 | 功能说明 |
---|---|
<handle name="accessedResourceHandler" match-pattern="*" handle-class="com.primeton.access.authorization.impl.AccessedBizHandler" type="businesslogic" nodeType="" nodeID=""/> | 用于控制对逻辑流资源的访问权限,会调用在user-config.xml中配置的Accessed-Resource-Checked/Provider/CheckedHandler |
# handler-entity.xml
对持久化实体进行处理时拦截器配置,可以在装载数据(Load)之前、装载数据(Load)之后、保存数据(Save)之前、修改数据(Update)之前、删除数据(Delete)之后对数据进行处理。 其格式如下:
<handlers>
<handler id="handler1"
class="com.primeton.server.das.persistententity.handler.MyHandler">
<match matchName="*" isRegex="true"/>
</handler>
</handlers>
其属性描述为:
属性名称 | 含义 |
---|---|
handlers | 可以有多个handler节点,不同的handler执行顺序按照配置文件中定义的顺序执行。 |
handler | 具体的拦截器配置项。 |
id | 配置实体拦截器的名字,在配置文件中多个handler节点的id属性值不能重复。 |
class | 拦截器的实现类,该类需实现com.primeton.das.entity.impl.handler.IEntityHandler接口。 |
match | 用于定义实体和拦截器的匹配规则,在一个handler节点中可以有多个match条目。 |
matchName | 需要拦截的实体名字,必须是全名,支持通配符*,通配符仅仅支持一个,如"abc.a"等。 |
isRegex | 是否支持通配符*,取值范围为true、false。 |
# handler-namedsql.xml
命名SQL执行过程处理时拦截器配置,可以在查询(Query)之前、更新(Update)之前、插入(Insert)之前、删除(Delete)之前对数据进行处理。 其格式如下:
<handlers>
<handler id="handler1"
class="com.primeton.server.das.namedsql.handler.Handler1">
<match matchName="selectSchoolByKey" isRegex="true"/>
</handler>
</handlers>
其属性描述为:
属性名称 | 含义 |
---|---|
handlers | 可以有多个handler节点,不同的handler执行顺序按照配置文件中定义的顺序执行。 |
handler | 具体的拦截器配置项。 |
id | 配置命名SQL拦截器的名字,在配置文件中多个handler节点的id属性值不能重复。 |
class | 命名SQL拦截器的实现类,需实现com.primeton.das.sql.impl.nhandler.IHandler接口。 |
match | 定义命名SQL和命名SQL拦截器的匹配规则,在一个handler节点中可以有多个match条目。 |
matchName | 拦截的命名SQL名字,必须是全名,支持通配符*,通配符*仅仅支持一个。 |
isRegex | 是否支持通配符*,取值范围为true、false。 |
# handler-processor.xml
访问请求时处理器配置,针对不同的资源类型请求使用不同的解析器处理,不再需要在web.xml文件中进行配置。 在删除(Delete)之前对数据进行处理。 其格式如下:
<handlers>
<handler id="id" suffix=".biz.ext" sortIdx="0"
class="XXXProcessor" />
</handlers>
其属性描述为:
属性名称 | 含义 |
---|---|
handlers | 可以有多个handler节点,不同的handler执行顺序按照配置文件中定义的顺序执行。 |
handler | 具体的拦截器配置项。 |
id | 表示handler的编号,在配置文件中,不同的handler之间id编号不能重复。 |
suffix | processor匹配的http后缀名,支持多个,多个之间以","分割。 |
sortIdx | 排序编号,数字小的先执行。 |
class | 具体的实现类,必须实现com.eos.access.http.IProcessor。 |
系统默认配置了对扩展名为:,.download,.remote,.biz.ajax,.bizx.ajax,.precompile,.bizx.debug,.biz.debug,.gzip,.thread.terminate的处理。
拦截器动态添加API:
import com.eos.access.http.RequstProcessors;
import com.eos.access.http.IProcessor;
RequstProcessors.INSTANCE.put(String requestType, IProcessor processor);
参数说明:
- requestType:设置请求的后缀名
- processor:实现com.eos.access.http.IProcessor接口的实例
# handler-startup.xml
应用启动、停止的事件监听器配置;当应用启动、停止事件发生时,可以回调用户定义的操作,完成其特定的功能,其格式如下:
<handlers>
<handler handle-class="com.primeton.ext.das.common.DASCommonStartupListener"/>
</handlers>
其属性描述为:
属性名称 | 含义 |
---|---|
handlers | 可以有多个handler节点,不同的handler执行顺序按照配置文件中定义的顺序执行 |
handler | 具体的拦截器配置项 |
handle-class | 具体的实现类,必须实现com.eos.runtime.core.IRuntimeListener |
系统默认的拦截器配置说明如下:
启动类描述 | 启动类名称 | 功能说明 |
---|---|---|
启动类描述 | 启动类名称 | 功能说明 |
应用资源启动监听器 | com.primeton.ext.common.international.startup.AppResourceStartupRuntimeListener | 加载国际化资源 |
应用配置启动监听器 | com.primeton.ext.common.config.startup.AppConfigStartupRuntimeListener | 加载应用配置文件,包括user-config.xml、sys-config.xml、user-local-config.xml |
异步调用监听器 | com.primeton.ext.common.asyn.startup.AppAsynStartupRuntimeListener | 异步调用时,启动调用线程池 |
数据上下文启动监听器 | com.primeton.ext.data.datacontext.startup.DataContextStartupListener | 注册DataContext的序列化和反序列化处理器 |
引擎启动监听器 | com.primeton.engine.core.impl.process.EngineStartUpListener | 引擎调用时初始化动作,包括逻辑流、页面流编译时Class loader的形成 |
数据服务启动监听器 | com.primeton.ext.das.common.DASCommonStartupListener | 加载系统默认的XSD文件,包括AnyType.xsd、Unique.xsd、Dict.xsd、AccessClient.xsd |
HTTP接入的启动监听器 | com.primeton.ext.access.http.startup.AccessHttpStartupListener | 注册上传文件的序列化器,供调试时数据显示 |
构件包资源加载启动监听器 | com.primeton.ext.runtime.resource.startup.ResourceConfigLoaderStartUpListener  | 配置文件内容加载,并缓存 |
数据库连接管理启动监听器 | com.primeton.ext.common.connection.startup.ConnectionStartupListener | 服务停止时释放连接资源 |
XPath处理启动监听器 | com.primeton.ext.data.xpath.startup.XPathStartupListener | 从缓存中读取xpath路径,以提高性能 |
# handler-web.xml
Http页面请求时调用的拦截器设置,提供了类似的Filter功能用于拦截请求,而无需在web.xml中配置,简化了web.xml的复杂度,其格式如下:
<handlers>
<handler id="WSInterceptor" sortIdx="0" pattern="/*"
class=" com.eos.access.http.UserLoginCheckedFilter "/>
</handlers>
其属性描述为:
属性名称 | 含义 |
---|---|
属性名称 | 含义 |
handlers | 可以有多个handler节点,按照sortIdx的大小先后执行,数字小的先执行 |
handler | 具体的拦截器配置项 |
id | 请求过滤拦截器的唯一id号,多个handler之间不能重复 |
sortIdx | 排序编号,数字小的先执行 |
pattern | 请求URL匹配模式,支持如下的几种方式: |
class | 具体的实现类,必须实现com.eos.access.http.IWebInterceptor |
系统默认的拦截器配置说明如下:
拦截器名称 | 拦截器名称类 | 功能说明 |
---|---|---|
语言Local信息拦截器 | com.primeton.access.http.impl.WebI18NInterceptor | 设置语言的Local信息 |
用户是否登录检查过滤器 | com.eos.access.http.UserLoginCheckedFilter | 请求时,判断用户是否已经登陆。如果为非portal模式,并且没有登陆,则返回到错误页面 |
HTTP资源访问控制过滤器 | com.primeton.access.authorization.impl.AccessedHttpResourceFilter | 用于控制对HTTP资源的访问权限,会调用在user-config.xml中配置的Accessed-Resource-Checked/Provider/CheckedHandler |
拦截器动态添加API:
import com.eos.access.http.WebInterceptorConfig;
import com.eos.access.http.WebInterceptorManager;
//创建InterceptorConfig对象
WebInterceptorConfig webInterceptorConfig = new WebInterceptorConfig();
//设置Interceptor对象属性,与配置文件的属性一致
webInterceptorConfig.setXXX(xxx);
WebInterceptorManager.INSTANCE.addInterceptorConfig(webInterceptorConfig);
# spring.xml
系统默认提供的Spring Bean配置,包括数据源、事务管理器等,按标准的spring bean进行配置。
系统默认提供的Bean如下:
Bean ID | 描述 |
---|---|
DefaultDataSource | 数据源Bean |
DefaultTransactionManager | 事务管理器Bean |
DefaultNamingTransactionAttribute | 事务传播方式Bean |
DefaultBaseTransactionProxy | 事务代理Bean |
BeanInterceptor | Spring Bean监听Bean |
# logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="TRACE_LOG_FILE" value="./target/trace.log" />
<property name="ENGINE_LOG_FILE" value="./target/engine.log" />
<property name="SYS_LOG_FILE" value="./target/sys.log" />
<property name="DAP_TRACE_LOG_FILE" value="./target/dap-trace.log" />
<include resource="com/primeton/eos/springboot/logging/logback/logback-spring.xml" />
</configuration>
日志类型:
EOS的trace日志
- 通过TRACE_LOG_FILE指定日志文件位置
- 默认级别为INFO
EOS的engine日志
- 通过ENGINE_LOG_FILE指定日志文件位置
- 默认日志级别为OFF
EOS的system日志
- 通过SYS_LOG_FILE指定日志文件位置
- 默认日志级别为OFF
EOS的分布式调用日志
通过DAP_TRACE_LOG_FILE指定日志文件位置
默认级别为INFO
如果想要指定某个具体的日志的级别,可以使用如:
<!-- 修改trace日志的某个包下的日志级别 -->
<logger name="com.primeton" level="DEBUG"/>
<!-- 打开所有engine日志 -->
<logger name="engine_trace" level="INFO"/>
<!-- 打开所有system日志 -->
<logger name="log.sys" level="INFO"/>
<!-- 关闭所有分布式调用日志 -->
<logger name="eos-trace" level="OFF"/>
# serialkiller.xml
针对JDK对象序列化/反序列化时黑白名单配置。
黑名单配置格式如下:
<config>
<blacklist>
<regexps>
<regexp>bsh\.XThis$</regexp>
...
<regexp>org\.docx4j\.org\.apache\.xalan\.lib\.sql\.JNDIConnectionPool$</regexp>
</regexps>
</blacklist>
</config>
白名单配置格式如下:
<config>
<whitelist>
<regexps>
<regexp>.*</regexp>
</regexps>
</whitelist>
</config>
# assembly.xml
Maven项目自定义打包格式配置。
基本属性:
<id>package</id>
<formats>
<format>tar.gz</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
其属性描述:
属性 | 含义 |
---|---|
id | 标识 |
format | 打包格式 |
includeBaseDirectory | 是否包含基础目录 |
依赖的jar, 可以由外部替换:
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<includes>
<include>mysql:*</include>
</includes>
<fileMode>0755</fileMode>
</dependencySet>
</dependencySets>
其属性描述:
属性名称 | 含义 |
---|---|
outputDirectory | 输出目录 |
include | 包含的依赖Jar |
fileMode | 文件模式 |
Jar文件配置格式如下:
<fileSets>
<!-- 程序本身的jar -->
<fileSet>
<directory>target</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
<fileMode>0755</fileMode>
</fileSet>
<!-- 程序的配置 -->
<fileSet>
<directory>src/META-INF</directory>
<outputDirectory>config</outputDirectory>
<includes>
<include>*.yml</include>
<include>*.properties</include>
<include>logback-spring.xml</include>
</includes>
</fileSet>
...
</fileSets>
其属性描述:
属性名称 | 含义 |
---|---|
directory | 文件目录 |
outputDirectory | 输出目录 |
include | 包含的文件 |
fileMode | 文件模式 |
# antisamy-security.xml
开源antisamy的一个配置文件,用来防止XSS跨站点脚本攻击的策略文件。
全局性配置,对antisamy的过滤验证规则、输入及输出的格式进行全局性的控制。格式如下:
<directives>
<directive name="omitXmlDeclaration" value="true"/>
<directive name="omitDoctypeDeclaration" value="true"/>
<directive name="maxInputSize" value="10000"/>
<directive name="useXHTML" value="true"/>
<directive name="formatOutput" value="false"/>
<directive name="embedStyleSheets" value="false"/>
</directives>
其属性描述:
Key名称 | 含义 |
---|---|
omitXmlDeclaration | 按照文档描述,在开启时antisamy自动添加xml的头 |
omitDoctypeDeclaration | 在值为false时,antisamy在输出结果中自动添加html头 |
maxInputSize | 用于验证的最长字符串长度,单位bytes |
useXHTML | 开启后,antisamy的结果将按照XHTML的格式输出,默认使用HTML |
formatOutput | 开启后,antisamy会将输出结果格式化,使可读性更好 |
embedStyleSheets | 功能:在开启css过滤功能后,该指令确认是否将引用的css文件下载下来并导入到用户输入一起作为检查的输入 |
将规则文件中需要使用到的正则表达式相同的部分归总,在后续中需要正则的时候通过name直接引用。格式如下:
<common-regexps>
<regexp name="colorCode" value="(#([0-9a-fA-F]{6}|[0-9a-fA-F]{3}))"/>
<regexp name="htmlId" value="[a-zA-Z0-9\:\-_\.]+"/>
<regexp name="number" value="(-|\+)?([0-9]+(\.[0-9]+)?)"/>
<regexp name="angle" value="(-|\+)?([0-9]+(\.[0-9]+)?)(deg|grads|rad)"/>
<regexp name="time" value="([0-9]+(\.[0-9]+)?)(ms|s)"/>
...
</common-regexps>
其属性描述:
属性名称 | 含义 |
---|---|
name | 正则的名称,通过名称被引用 |
value | 具体的正则表达式的内容 |
定义通用的属性需要满足的输入规则,其中包括了标签和css的属性,在后续的tag和css的处理规则中会引用到上述定义的属性。格式如下:
<common-attributes>
<attribute name="id" description="The 'id' of any HTML attribute should not contain anything besides letters and numbers">
<regexp-list>
<regexp name="htmlId"/>
</regexp-list>
</attribute>
<attribute name="media">
<regexp-list>
<regexp value="[a-zA-Z0-9,\-\s]+"/>
</regexp-list>
<literal-list>
<literal value="screen"/>
<literal value="tty"/>
<literal value="tv"/>
<literal value="projection"/>
<literal value="handheld"/>
<literal value="print"/>
<literal value="braille"/>
<literal value="aural"/>
<literal value="all"/>
</literal-list>
</attribute>
...
</common-attributes>
其属性描述:
属性名称 | 含义 |
---|---|
attribute name | 标签的名称,与html的tag名称保持一致 |
regexp name | 标签需要满足的正则表达式的名称,其在<common-regexps>中定义 |
regexp value | 标签需要满足的正则表达式 |
regexp-list | 通过literal直接指定属性的值 |
定义所有标签的默认属性需要遵守的规则。格式如下:
<global-tag-attributes>
<attribute name="id"/>
<attribute name="style"/>
<attribute name="title"/>
<attribute name="class"/>
<attribute name="lang"/>
</global-tag-attributes>
其属性描述:
属性名称 | 含义 |
---|---|
attribute name | 全局属性名称 |
定义需要进行编码处理的标签。格式如下:
<tags-to-encode>
<tag>g</tag>
<tag>grin</tag>
</tags-to-encode>
定义tag的处理规则,共有三种处理方式。
- remove:对应的标签直接删除
- truncate:对应的标签进行缩短处理,直接删除所有属性,只保留标签和值
- validate:对应的标签的属性进行验证,如果tag中定义了属性的验证规则,按照tag中的规则执行;如果标签中未定义属性,则按照 <global-tag-attributes> 中定义的处理 格式如下:
<tag-rules>
<tag name="script" action="remove"/>
<tag name="label" action="validate">
<attribute name="for">
<regexp-list>
<regexp name="htmlId"/>
</regexp-list>
</attribute>
</tag>
<tag name="font" action="validate">
<attribute name="color">
<regexp-list>
<regexp name="colorName"/>
<regexp name="colorCode"/>
</regexp-list>
</attribute>
<attribute name="face">
<regexp-list>
<regexp value="[\w;, \-]+"/>
</regexp-list>
</attribute>
<attribute name="size">
<regexp-list>
<regexp value="(\+|-){0,1}(\d)+"/>
</regexp-list>
</attribute>
</tag>
</tag-rules>
定义css的处理规则。格式如下:
<css-rules>
<property name="background" description="The 'background' property is a shorthand property for setting the individual background properties (i.e., 'background-color', 'background-image', 'background-repeat', 'background-attachment' and 'background-position') at the same place in the style sheet.">
<literal-list>
<literal value="inherit"/>
</literal-list>
<shorthand-list>
<shorthand name="background-color"/>
<shorthand name="background-image"/>
<shorthand name="background-repeat"/>
<shorthand name="background-attachment"/>
<shorthand name="background-position"/>
</shorthand-list>
</property>
<property name="border-color" description="">
<category-list>
<category value="visual"/>
</category-list>
<literal-list>
<literal value="transparent"/>
<literal value="inherit"/>
</literal-list>
<regexp-list>
<regexp name="colorName"/>
<regexp name="colorCode"/>
<regexp name="rgbCode"/>
<regexp name="systemColor"/>
</regexp-list>
</property>
...
</css-rules>
css过滤规格的定义和tag的基本相同;但是css有一些特殊的字段。相比tag的过滤规则,css增加了shorthand-list,为css的自有语法。意味着如果background有多个值,说明使用了css的缩写,同时需要满足shorthand中规定的属性的过滤规则。