# 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 事务隔离级别,共有以下几种:
  • ISOLATION_READ_UNCOMMITTED:保证了读取过程中不会读取到非法数据
  • ISOLATION_READ_COMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了"脏读取"
  • ISOLATION_REPEATABLE_READ:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了"脏读取"和"不可重复读取"的情况
  • ISOLATION_SERIALIZABLE:最严格的级别,事务串行执行,资源消耗最大系统默认为:ISOLATION_READ_COMMITTED
  • Database-Type 数据库类型,支持DB2、Oracle、SQL Server、Informix、Sybase、MySql
    Jdbc-Type 数据库驱动类型:
  • DB2支持IBM DB2 Driver(Type4)
  • Oracle支持Oracle Driver(thin)(Type4)
  • SqlServer支持MS SQLServer Driver(Type4)
  • 2000Informix支持Informix Driver(Type4)
  • Sybase支持Sybase Driver(Type4)
  • MySql支持MySQL Driver(Type4)
  • Test-Connect-Sql 测试连接SQL,与Retry-Connect-Count配合使用,如果Retry-Connect-Count设置值大于0,则取得连接后执行此SQL,如果出错,继续重连
    Retry-Connect-Count 连接重试次数,取值范围为整数,负数表示不重连,系统默认值为-1
    • JNDI数据源各项值配置如下:
    Key名称 含义
    Jndi-Name 数据源的JNDI名称
    Transaction-Isolation 事务隔离级别,共有以下几种:
  • ISOLATION_READ_UNCOMMITTED:保证了读取过程中不会读取到非法数据
  • ISOLATION_READ_COMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了"脏读取"
  • ISOLATION_REPEATABLE_READ:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了"脏读取"和"不可重复读取"的情况
  • ISOLATION_SERIALIZABLE:最严格的级别,事务串行执行,资源消耗最大系统默认为:ISOLATION_READ_COMMITTED
  • 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 缓存模式,共有四种:
  • 异步失效INVALIDATION_ASYNC:以异步方式进行失效通知;同步失效
  • INVALIDATION_SYNC:以同步方式进行失效通知;异步复制
  • REPL_ASYNC:以异步方式进行复制通知;同步复制
  • REPL_SYNC:以同步方式进行复制通知。系统默认为"异步失效"的方式。
  • 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
  • true:门户模式,不需要登录系统就可以访问页面
  • false:非门户模式,必须先登录系统才能访问页面系统默认为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
  • true:根据应用服务器类型自动判断,tomcat为线程方式,Websphere、Weblogic、Jboss下采用队列方式
  • false:固定采用线程方式系统默认为true
  • # 业务量统计配置

    业务量统计配置,对应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四种,分别表示为:
  • Config 配置MBean:用于修改配置文件,实现类是com.eos.common.config.Config;
  • Monitor 监控MBean:用于监控EOS应用,比如Sql监控,页面流监控等;
  • Management 管理MBean:用于管理EOS应用,比如应用管理,服务器管理等;
  • Other 其他特殊MBean:用于特殊操作,目前主要用于验证。
  • Class 实现MBean的类名,除了配置MBean,要求有一个无参构造方法。
    Handler 配置MBean特有的,作为其Bean class的构造参数传入,需要实现com.eos.common.config.mbean.IConfigHandler接口。
    ConfigFileType 配置文件类型,取值范围有config、applog、log、handlerAccess四种,仅当Type属性为config时有效。
  • Config:处理sys-config.xml、user-config.xml、user-local-config.xml;
  • Applog:处理系统日志、引擎日志、Trace日志;
  • Log:处理构件包日志;
  • handlerAccess:处理文件handler-access.xml。
  • 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 事务传播方式,共有以下几种:
  • PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务,这是最常见的选择;
  • PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行;
  • PROPAGATION_MANDATORY:支持当前事务,如果当前没有事务,就抛出异常;
  • PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起;
  • PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起;
  • PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。系统默认为PROPAGATION_REQUIRED。
  • Isolation 事务隔离级别,共有以下几种:
  • ISOLATION_READ_UNCOMMITTED:保证了读取过程中不会读取到非法数据;
  • ISOLATION_READ_COMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了"脏读取";
  • ISOLATION_REPEATABLE_READ:保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了"脏读取"和"不可重复读取"的情况;
  • ISOLATION_SERIALIZABLE:最严格的级别,事务串行执行,资源消耗最大;
  • ISOLATION_DEFAULT:数据库默认。
  • # 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,*。
  • type="businesslogic"表示对逻辑流进行拦截
  • type="pageflow"表示对页面流进行拦截
  • type="*"表示对页面流和逻辑流都进行拦截
  • 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。
  • 如果为true,matchName属性可以按照下面的格式定义哪些数据实体需要被拦截: *[字符串],[字符串]**,[字符串],[字符串]**[字符串]
  • 如果为false,则对全名称进行匹配,如果matchName中有*,表示当前的数据实体就包含*这个字符串。 举例:com.primeton.order.data.O*der表示当前的数据实体本身包含*字符。
  • # 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。
  • 如果为true,matchName属性可以按照下面的格式定义哪些数据实体需要被拦截: *[字符串],[字符串]**,[字符串],[字符串]**[字符串]
  • 如果为false,则对全名称进行匹配,如果matchName中有*,表示当前的数据实体就包含*这个字符串。 举例:com.primeton.order.data.O*der表示当前的数据实体本身包含*字符。
  • # 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&nbsp 配置文件内容加载,并缓存
    数据库连接管理启动监听器 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匹配模式,支持如下的几种方式:
  • *.xxx,例如:**.do、**.jsp等
  • /*拦截所有请求
  • xxx精确匹配,例如:/samples/test.jsp
  • xxx/*混合匹配,xxx必须精确匹配,例如:/samples/test/*
  • 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中规定的属性的过滤规则。

    上次更新: 2023/7/20下午12:25:28