diff --git a/redkale.html b/redkale.html
index 2ea67e1fc..628a17a81 100644
--- a/redkale.html
+++ b/redkale.html
@@ -517,6 +517,7 @@
<!--
文件说明:
${APP_HOME} 指当前程序的根目录APP_HOME
+ 没注明唯一的节点可多个存在
required: 被声明required的属性值不能为空
-->
<!--
@@ -527,20 +528,25 @@
-->
<application port="6560" lib="">
- <!-- 所有服务所需的资源 -->
+ <!--
+ 【节点全局唯一】
+ 所有服务所需的资源
+ -->
<resources>
<!--
+ 【节点全局唯一】
transport节点只能有一个,用于配置所有Transport的池参数,没配置该节点将自动创建一个。
threads: 线程总数, 默认: <group>节点数*CPU核数*8
bufferCapacity: ByteBuffer的初始化大小, 默认: 8K;
bufferPoolSize: ByteBuffer池的大小,默认: <group>节点数*CPU核数*8
-->
- <transport capacity="8192" bufferPoolSize="32" threads="32"/>
+ <transport bufferCapacity="8K" bufferPoolSize="32" threads="32"/>
<!--
一个组包含多个NODE, 同一Service服务可以由多个进程提供,这些进程称为一个GROUP,且同一GROUP内的进程必须在同一机房或局域网内
一个group节点对应一个 Transport 对象。
name: 服务组ID,长度不能超过11个字节. 默认为空字符串。 注意: name不能包含$符号。
protocol:值只能是UDP TCP, 默认TCP
+ kind: 与SNCP服务连接时的数据传输类型;可选值有:rest(不区分大小写);值为空或空字符串表示按SNCP协议传输; 为rest表示按REST传输。默认值为空
注意: 一个node只能所属一个group。只要存在protocol=SNCP的Server节点信息, 就必须有group节点信息。
-->
<group name="" protocol="TCP">
@@ -555,6 +561,7 @@
<node addr="127.0.0.1" port="7070"/>
</group>
<!--
+ 【节点全局唯一】
全局的参数配置, 可以通过@Resource(name="property.xxxxxx") 进行注入, 被注解的字段类型只能是String、primitive class
如果name是system.property.开头的值将会在进程启动时进行System.setProperty("yyyy", "YYYYYY")操作。
如果name是mimetype.property.开头的值将会在进程启动时进行MimeType.add("yyyy", "YYYYYY")操作。
@@ -580,7 +587,8 @@
host: 服务所占address , 默认: 0.0.0.0
port: required 服务所占端口
root: 如果是web类型服务,则包含页面 默认:{APP_HOME}/root
- lib: server额外的class目录, 默认为空
+ lib: server额外的class目录, 默认为空
+ excludelibs: 排除lib.path与excludes中的正则表达式匹配的路径, 多个正则表达式用分号;隔开
charset: 文本编码, 默认: UTF-8
backlog: 默认10K
threads: 线程总数, 默认: CPU核数*16
@@ -589,8 +597,8 @@
bufferPoolSize: ByteBuffer池的大小,默认: CPU核数*512
responsePoolSize: Response池的大小,默认: CPU核数*256
readTimeoutSecond: 读操作超时秒数, 默认0, 表示永久不超时
- writeTimeoutSecond: 写操作超时秒数, 默认0, 表示永久不超时
- interceptor: 启动/关闭NodeServer时被调用的拦截器实现类,必须是org.redkale.boot.NodeInterceptor的子类,默认为null
+ writeTimeoutSecond: 写操作超时秒数, 默认0, 表示永久不超时
+ interceptor: 启动/关闭NodeServer时被调用的拦截器实现类,必须是org.redkale.boot.NodeInterceptor的子类,默认为null
-->
<server protocol="HTTP" host="127.0.0.1" port="6060" root="root" lib="">
@@ -616,13 +624,31 @@
-->
<service value="com.xxx.XXX2Service" name="" groups="xxx;yyy"/>
<!-- 给Service增加配置属性 -->
- <service value="com.xxx.XXX1Service">
- <property name="xxxxxx" value="XXXXXXXX"/>
+ <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.RestHttpServlet 的子类,该属性值默认值为 org.redkale.net.http.DefaultRestServlet。
+ autoload:默认值"true" 默认值. 加载当前server所能使用的Servce对象;
+ mustsign:默认值"true" 是否只加载标记为RestService的Service类,默认只加载标记RestService且ignore=false的Service
+ includes:当autoload="true", 拉取类名与includes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
+ excludes:当autoload="true", 排除类名与excludes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
+ -->
+ <rest base="org.redkale.net.http.DefaultRestServlet" mustsign="false" autoload="true" includes="" excludes="">
+ <!--
+ value: Service类名,列出的表示必须被加载的Service对象
+ ignore: 是否忽略,设置为true则不会加载该Service对象,默认值为false
+ -->
+ <service value="com.xxx.XXXXService"/>
+ </rest>
+
<!--
+ 【节点在<server>中唯一】
当Server为HTTP协议时, request节点才有效。
remoteaddr 节点: 替换请求方节点的IP地址, 通常请求方是由nginx等web静态服务器转发过的则需要配置该节点。
且value值只能是以request.headers.开头,表示从request.headers中获取对应的header值。
@@ -633,6 +659,7 @@
</request>
<!--
+ 【节点在<server>中唯一】
当Server为HTTP协议时, response节点才有效。
defcookie 节点: 当response里输出的cookie没有指定domain 和path时,使用该节点的默认值。
如果addheader、setheader 的value值以request.parameters.开头则表示从request.parameters中获取对应的parameter值
@@ -645,6 +672,30 @@
<setheader name="Access-Control-Allow-Credentials" value="true"/>
</response>
+ <!--
+ 【节点在<server>中唯一】
+ 当Server为HTTP协议时,ResourceServlet才有效. 默认存在一个有默认属性的resource-servlet节点
+ webroot: web资源的根目录, 默认取server节点中的root值
+ servlet: 静态资源HttpServlet的实现,默认使用HttpResourceServlet
+ index : 启始页,默认值:index.html
+ -->
+ <resource-servlet webroot="root" index="index.html">
+ <!--
+ 资源缓存的配置, 默认存在一个含默认属性的caches节点
+ limit: 资源缓存最大容量, 默认: 0, 为0表示不缓存, 单位可以是B、K、M、G,不区分大小写
+ lengthmax: 可缓存的文件大小上限, 默认: 1M(超过1M的文件不会被缓存)
+ watch: 是否监控缓存文件的变化, 默认不监控
+ -->
+ <cache limit="0M" lengthmax="1M" watch="false"/>
+ <!--
+ 支持类似nginx中的rewrite, 目前只支持静态资源对静态资源的跳转。
+ type: 匹配的类型, 目前只支持location(匹配requestURI), 默认: location
+ match: 匹配的正则表达式
+ forward: 需跳转后的资源链接
+ 例如下面例子是将/xxx-yyy.html的页面全部跳转到/xxx.html
+ -->
+ <rewrite type="location" match="^/([^-]+)-[^-\.]+\.html(.*)" forward="/$1.html"/>
+ </resource-servlet>
<!--
加载所有的Servlet服务;
path: servlet的ContextPath前缀 默认为空
@@ -655,28 +706,6 @@
excludes: 当autoload="true", 排除类名与excludes中的正则表达式匹配的类, 多个正则表达式用分号;隔开
-->
<servlets path="/pipes" autoload="true" includes="" excludes="">
- <!--
- 当Server为HTTP协议时,ResourceServlet才有效. 默认存在一个有默认属性的resource-servlet节点
- webroot: web资源的根目录, 默认取server节点中的root值
- index : 启始页,默认值:index.html
- -->
- <resource-servlet webroot="root" index="index.html">
- <!--
- 资源缓存的配置, 默认存在一个含默认属性的cache节点
- limit: 资源缓存最大容量, 默认: 0, 为0表示不缓存, 单位可以是B、K、M、G,不区分大小写
- lengthmax: 可缓存的文件大小上限, 默认: 1M(超过1M的文件不会被缓存)
- watch: 是否监控缓存文件的变化, 默认不监控
- -->
- <cache limit="0M" lengthmax="1M" />
- <!--
- 支持类似nginx中的rewrite, 目前只支持静态资源对静态资源的跳转。
- type: 匹配的类型, 目前只支持location(匹配requestURI), 默认: location
- match: 匹配的正则表达式
- forward: 需跳转后的资源链接
- 例如下面例子是将/xxx-yyy.html的页面全部跳转到/xxx.html
- -->
- <rewrite type="location" match="^/([^-]+)-[^-\.]+\.html(.*)" forward="/$1.html"/>
- </resource-servlet>
<!-- 显著加载指定的Servlet -->
<servlet value="com.xxx.XXX1Servlet" />
<servlet value="com.xxx.XXX2Servlet" />
@@ -692,7 +721,8 @@
<services autoload="true" includes="" excludes="" />
</server>
</application>
-
+
+