From cc165e36a2158e28ba2c3dbf4c6b157f966a3296 Mon Sep 17 00:00:00 2001
From: Redkale <22250530@qq.com>
Date: Mon, 29 May 2017 19:34:49 +0800
Subject: [PATCH]
---
redkale.html | 207 +++++++++++++++++++++++++++++++--------------------
1 file changed, 126 insertions(+), 81 deletions(-)
diff --git a/redkale.html b/redkale.html
index bc59c647b..5c6b06ce6 100644
--- a/redkale.html
+++ b/redkale.html
@@ -514,7 +514,7 @@
<?xml version="1.0" encoding="UTF-8"?>
+ <?xml version="1.0" encoding="UTF-8"?>
<!--
文件说明:
${APP_HOME} 指当前程序的根目录APP_HOME
@@ -526,13 +526,14 @@
port: required 程序的管理Server的端口,用于关闭或者与监管系统进行数据交互
lib: 加上额外的lib路径,多个路径用分号;隔开; 默认为空。 例如: ${APP_HOME}/lib/a.jar;${APP_HOME}/lib2/b.jar;
-->
-<application port="6560" lib="">
+<application port="6560" lib="">
<!--
【节点全局唯一】
所有服务所需的资源
- -->
- <resources>
+ -->
+ <resources>
+
<!--
【节点全局唯一】
transport节点只能有一个,用于配置所有Transport的池参数,没配置该节点将自动创建一个。
@@ -540,16 +541,17 @@
bufferCapacity: ByteBuffer的初始化大小, 默认: 8K;
bufferPoolSize: ByteBuffer池的大小,默认: <group>节点数*CPU核数*8
-->
- <transport bufferCapacity="8K" bufferPoolSize="32" threads="32"/>
+ <transport bufferCapacity="8K" bufferPoolSize="32" threads="32"/>
+
<!--
- 一个组包含多个NODE, 同一Service服务可以由多个进程提供,这些进程称为一个GROUP,且同一GROUP内的进程必须在同一机房或局域网内
+ 一个组包含多个node, 同一Service服务可以由多个进程提供,这些进程称为一个GROUP,且同一GROUP内的进程必须在同一机房或局域网内
一个group节点对应一个 Transport 对象。
name: 服务组ID,长度不能超过11个字节. 默认为空字符串。 注意: name不能包含$符号。
- protocol:值只能是UDP TCP, 默认TCP
+ protocol:值范围:UDP TCP, 默认TCP
subprotocol: 子协议,预留字段。默认值为空
注意: 一个node只能所属一个group。只要存在protocol=SNCP的Server节点信息, 就必须有group节点信息。
-->
- <group name="" protocol="TCP">
+ <group name="" protocol="TCP">
<!--
需要将本地node的addr与port列在此处。
同一个<node>节点值只能存在一个<group>节点内,即同一个addr+port只能属于一个group。
@@ -558,32 +560,47 @@
clients: 连接池数, 默认: CPU核数*4
buffers: ByteBuffer对象池的大小, 默认: CPU核数*8
-->
- <node addr="127.0.0.1" port="7070"/>
- </group>
+ <node addr="127.0.0.1" port="7070"/>
+ </group>
+
+ <!--
+ 全局的数据源设置, 可以是CacheSource、DataSource, JDBC的DataSource通常通过persistence.xml配置,此处多用于CacheSource的配置
+ name: 资源名,用于依赖注入。
+ value:类名,必须是CacheSource或DataSource的子类,且必须实现Service接口。
+ groups: 指定groups。
+ xxx: 其他属性与子节点通过Service.init方法传入的AnyValue获取。
+ -->
+ <source name="redis" value="org.redkalex.cache.RedisCacheSource" xxx="16">
+ <node addr="127.0.0.1" port="7070"/>
+ </source>
+
<!--
【节点全局唯一】
- 全局的参数配置, 可以通过@Resource(name="property.xxxxxx") 进行注入, 被注解的字段类型只能是String、primitive class
- 如果name是system.property.开头的值将会在进程启动时进行System.setProperty("yyyy", "YYYYYY")操作。
- 如果name是mimetype.property.开头的值将会在进程启动时进行MimeType.add("yyyy", "YYYYYY")操作。
+ 全局的参数配置, 可以通过@Resource(name="property.xxxxxx") 进行注入<property>的信息, 被注解的字段类型只能是String、primitive class
+ 如果name是system.property.开头的值将会在进程启动时进行System.setProperty("yyyy", "YYYYYY")操作。
+ 如果name是mimetype.property.开头的值将会在进程启动时进行MimeType.add("yyyy", "YYYYYY")操作。
load: 加载文件,多个用;隔开。
默认置入的system.property.的有:
- System.setProperty("convert.json.tiny", "true");
- System.setProperty("convert.bson.tiny", "true");
- System.setProperty("convert.json.pool.size", "128");
- System.setProperty("convert.bson.pool.size", "128");
- System.setProperty("convert.json.writer.buffer.defsize", "4096");
- System.setProperty("convert.bson.writer.buffer.defsize", "4096");
+ System.setProperty("convert.json.tiny", "true");
+ System.setProperty("convert.bson.tiny", "true");
+ System.setProperty("convert.json.pool.size", "128");
+ System.setProperty("convert.bson.pool.size", "128");
+ System.setProperty("convert.json.writer.buffer.defsize", "4096");
+ System.setProperty("convert.bson.writer.buffer.defsize", "4096");
+
+ <properties>节点下也可包含非<property>节点,其节点可以通过@Resource(name="properties.xxxxxx")进行注入, 被注解的字段类型只能是AnyValue、AnyValue[]
-->
- <properties load="config.properties">
- <property name="system.property.yyyy" value="YYYYYY"/>
- <property name="xxxxxx" value="XXXXXXXX"/>
- <property name="xxxxxx" value="XXXXXXXX"/>
- <property name="xxxxxx" value="XXXXXXXX"/>
- </properties>
- </resources>
+ <properties load="config.properties">
+ <property name="system.property.yyyy" value="YYYYYY"/>
+ <property name="xxxxxx" value="XXXXXXXX"/>
+ <property name="xxxxxx" value="XXXXXXXX"/>
+ <property name="xxxxxx" value="XXXXXXXX"/>
+ </properties>
+
+ </resources>
<!--
- protocol: required server所启动的协议,Redkale内置的有HTTP、SNCP,SNCP使用TCP实现;
- name: 服务的名称,用于监控识别,一个配置文件中的server.name不能重复,命名规则: 字母、数字、下划线、减号
+ protocol: required server所启动的协议,Redkale内置的有HTTP、SNCP、WATCH,SNCP使用TCP实现;
+ name: 服务的名称,用于监控识别,一个配置文件中的server.name不能重复,命名规则: 字母、数字、下划线
host: 服务所占address , 默认: 0.0.0.0
port: required 服务所占端口
root: 如果是web类型服务,则包含页面 默认:{APP_HOME}/root
@@ -593,58 +610,85 @@
backlog: 默认10K
threads: 线程总数, 默认: CPU核数*16
maxbody: request.body最大值, 默认: 64K
- bufferCapacity: ByteBuffer的初始化大小, 默认: 8K; 如果是HTTP协议则默认: 16K + 8B (兼容HTTP 2.0)
+ bufferCapacity: ByteBuffer的初始化大小, 默认: 8K; 如果是HTTP协议则默认: 16K + 16B (兼容HTTP 2.0、WebSocket)
bufferPoolSize: ByteBuffer池的大小,默认: CPU核数*512
responsePoolSize: Response池的大小,默认: CPU核数*256
readTimeoutSecond: 读操作超时秒数, 默认0, 表示永久不超时
writeTimeoutSecond: 写操作超时秒数, 默认0, 表示永久不超时
interceptor: 启动/关闭NodeServer时被调用的拦截器实现类,必须是org.redkale.boot.NodeInterceptor的子类,默认为null
-->
- <server protocol="HTTP" host="127.0.0.1" port="6060" root="root" lib="">
+ <server protocol="HTTP" host="127.0.0.1" port="6060" root="root" lib="">
<!--
加载所有的Service服务;
在同一个进程中同一个name同一类型的Service将共用同一个实例
- autoload="true" 默认值. 自动加载以下目录(如果存在的话)下所有的Service类:
+ autoload="true" 默认值. 自动加载以下目录(如果存在的话)下所有的Service类:
server.lib; server.lib/*; server.classes;
- autoload="false" 需要显著的指定Service类
- includes: 当autoload="true", 拉取类名与includes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
- excludes: 当autoload="true", 排除类名与excludes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
+ autoload="false" 需要显著的指定Service类
+ includes: 当autoload="true", 拉取类名与includes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
+ excludes: 当autoload="true", 排除类名与excludes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
groups: 所属组的节点,多个节点值用;隔开,如果配置文件中存在多个SNCP协议的Server节点,需要显式指定group属性.
当 protocol == SNCP 时 group表示当前Server与哪些节点组关联。
当 protocol != SNCP 时 group只能是空或者一个group的节点值,不能为多个节点值。
-->
- <services autoload="true" includes="" excludes="">
+ <services autoload="true" includes="" excludes="">
<!-- 显著加载指定的Service的接口类 -->
- <service value="com.xxx.XXX1Service"/>
+ <service value="com.xxx.XXX1Service"/>
<!--
name: 显式指定name,覆盖默认的空字符串值。 注意: name不能包含$符号。
groups: 显式指定groups,覆盖<services>节点的groups默认值。
-->
- <service value="com.xxx.XXX2Service" name="" groups="xxx;yyy"/>
+ <service value="com.xxx.XXX2Service" name="" groups="xxx;yyy"/>
<!-- 给Service增加配置属性 -->
- <service value="com.xxx.XXX1Service">
- <!-- property节点值在 public void init(AnyValue conf) 方法中可以通过 AnyValue properties = conf.getAnyValue("properties");获取 -->
- <property name="xxxxxx" value="XXXXXXXX"/>
- <property name="xxxxxx" value="XXXXXXXX"/>
- </service>
- </services>
+ <service value="com.xxx.XXX1Service">
+ <!-- property节点值在 public void init(AnyValue conf) 方法中可以通过 AnyValue properties = conf.getAnyValue("properties");获取 -->
+ <property name="xxxxxx" value="XXXXXXXX"/>
+ <property name="xxxxxx" value="XXXXXXXX"/>
+ </service>
+ </services>
<!--
- REST的核心配置项, 存在[rest]节点则Server启动时会加载REST服务, 当Server为SNCP协议时,则SncpServer会变成REST的HttpServer, 节点可以多个
- base: REST服务的BaseServlet,必须是org.redkale.net.http.HttpServlet的子类,且子类必须标记 @HttpUserType。
- autoload:默认值"true" 默认值. 加载当前server所能使用的Servce对象;
- includes:当autoload="true", 拉取类名与includes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
- excludes:当autoload="true", 排除类名与excludes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
+ 加载所有的Filter服务;
+ autoload="true" 默认值.
+ autoload="false" 需要显著的指定Filter类
+ includes: 当autoload="true", 拉取类名与includes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
+ excludes: 当autoload="true", 排除类名与excludes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
-->
- <rest base="org.redkale.net.http.HttpServlet" autoload="true" includes="" excludes="">
+ <filters autoload="true" includes="" excludes="">
+
+ <!-- 显著加载指定的Filter类 -->
+ <filter value="com.xxx.XXX1Filter"/>
+
+ <!-- 给Filter增加配置属性 -->
+ <filter value="com.xxx.XXX12Filter">
+ <!-- property节点值在 public void init(AnyValue conf) 方法中可以通过 AnyValue properties = conf.getAnyValue("properties");获取 -->
+ <property name="xxxxxx" value="XXXXXXXX"/>
+ <property name="xxxxxx" value="XXXXXXXX"/>
+ </filter>
+ </filters>
+
+ <!--
+ REST的核心配置项
+ 当Server为HTTP协议时, rest节点才有效。存在[rest]节点则Server启动时会加载REST服务, 节点可以多个,(WATCH协议不需要设置,系统会自动生成)
+ path: servlet的ContextPath前缀 默认为空
+ base: REST服务的BaseServlet,必须是 org.redkale.net.http.HttpServlet 的子类,且子类必须标记@HttpUserType。
+ autoload:默认值"true" 默认值. 加载当前server所能使用的Servce对象;
+ includes:当autoload="true", 拉取类名与includes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
+ excludes:当autoload="true", 排除类名与excludes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
+ -->
+ <rest path="/pipes" base="org.redkale.net.http.HttpServlet" autoload="true" includes="" excludes="">
<!--
value: Service类名,列出的表示必须被加载的Service对象
ignore: 是否忽略,设置为true则不会加载该Service对象,默认值为false
-->
- <service value="com.xxx.XXXXService"/>
- </rest>
+ <service value="com.xxx.XXXXService"/>
+ <!--
+ value: WebSocket类名,列出的表示必须被加载且标记为@RestWebSocket的WebSocket对象
+ ignore: 是否忽略,设置为true则不会加载该RestWebSocket对象,默认值为false
+ -->
+ <websocket value="com.xxx.XXXXRestWebSocket"/>
+ </rest>
<!--
【节点在<server>中唯一】
@@ -653,9 +697,9 @@
且value值只能是以request.headers.开头,表示从request.headers中获取对应的header值。
例如下面例子获取request.getRemoteAddr()值,如果header存在X-RemoteAddress值则返回X-RemoteAddress值,不存在返回getRemoteAddress()。
-->
- <request>
- <remoteaddr value="request.headers.X-RemoteAddress"/>
- </request>
+ <request>
+ <remoteaddr value="request.headers.X-RemoteAddress"/>
+ </request>
<!--
【节点在<server>中唯一】
@@ -665,11 +709,11 @@
如果addheader、setheader 的value值以request.headers.开头则表示从request.headers中获取对应的header值
例如下面例子是在Response输出header时添加两个header(一个addHeader, 一个setHeader)。
-->
- <response>
- <defcookie domain="" path=""/>
- <addheader name="Access-Control-Allow-Origin" value="request.headers.Origin" />
- <setheader name="Access-Control-Allow-Credentials" value="true"/>
- </response>
+ <response>
+ <defcookie domain="" path=""/>
+ <addheader name="Access-Control-Allow-Origin" value="request.headers.Origin" />
+ <setheader name="Access-Control-Allow-Credentials" value="true"/>
+ </response>
<!--
【节点在<server>中唯一】
@@ -678,14 +722,15 @@
servlet: 静态资源HttpServlet的实现,默认使用HttpResourceServlet
index : 启始页,默认值:index.html
-->
- <resource-servlet webroot="root" index="index.html">
+ <resource-servlet webroot="root" index="index.html">
<!--
+ 【节点在<resource-servlet>中唯一】
资源缓存的配置, 默认存在一个含默认属性的caches节点
limit: 资源缓存最大容量, 默认: 0, 为0表示不缓存, 单位可以是B、K、M、G,不区分大小写
lengthmax: 可缓存的文件大小上限, 默认: 1M(超过1M的文件不会被缓存)
- watch: 是否监控缓存文件的变化, 默认不监控
+ watch: 是否监控缓存文件的变化, 默认为false,不监控
-->
- <cache limit="0M" lengthmax="1M" watch="false"/>
+ <cache limit="0M" lengthmax="1M" watch="false"/>
<!--
支持类似nginx中的rewrite, 目前只支持静态资源对静态资源的跳转。
type: 匹配的类型, 目前只支持location(匹配requestURI), 默认: location
@@ -693,33 +738,33 @@
forward: 需跳转后的资源链接
例如下面例子是将/xxx-yyy.html的页面全部跳转到/xxx.html
-->
- <rewrite type="location" match="^/([^-]+)-[^-\.]+\.html(.*)" forward="/$1.html"/>
- </resource-servlet>
+ <rewrite type="location" match="^/([^-]+)-[^-\.]+\.html(.*)" forward="/$1.html"/>
+ </resource-servlet>
<!--
加载所有的Servlet服务;
path: servlet的ContextPath前缀 默认为空
- autoload="true" 默认值. 自动加载以下目录(如果存在的话)下所有的Servlet类:
+ autoload="true" 默认值. 自动加载以下目录(如果存在的话)下所有的Servlet类:
${APP_HOME}/lib; ${APP_HOME}/root/lib/*; ${APP_HOME}/root/classes;
- autoload="false" 需要显著的指定Service类
- includes: 当autoload="true", 拉取类名与includes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
- excludes: 当autoload="true", 排除类名与excludes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
+ autoload="false" 需要显著的指定Service类
+ includes: 当autoload="true", 拉取类名与includes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
+ excludes: 当autoload="true", 排除类名与excludes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
-->
- <servlets path="/pipes" autoload="true" includes="" excludes="">
+ <servlets path="/pipes" autoload="true" includes="" excludes="">
<!-- 显著加载指定的Servlet -->
- <servlet value="com.xxx.XXX1Servlet" />
- <servlet value="com.xxx.XXX2Servlet" />
- <servlet value="com.xxx.XXX3Servlet" >
- <property name="xxxxxx" value="XXXXXXXX"/>
- <property name="yyyyyy" value="YYYYYYYY"/>
- </servlet>
- </servlets>
- </server>
+ <servlet value="com.xxx.XXX1Servlet" />
+ <servlet value="com.xxx.XXX2Servlet" />
+ <servlet value="com.xxx.XXX3Servlet" >
+ <property name="xxxxxx" value="XXXXXXXX"/>
+ <property name="yyyyyy" value="YYYYYYYY"/>
+ </servlet>
+ </servlets>
+ </server>
- <server protocol="SNCP" host="127.0.0.1" port="7070" root="root" lib="">
+ <server protocol="SNCP" host="127.0.0.1" port="7070" root="root" lib="">
<!-- 参数完全同上 -->
- <services autoload="true" includes="" excludes="" />
- </server>
-</application>
+ <services autoload="true" includes="" excludes="" />
+ </server>
+</application>