ClassFilter.toPattern优化
This commit is contained in:
@@ -271,12 +271,12 @@ serviceid1_name1 serviceid1_name2 serviceid2_name1 serviceid2_name2
|
|||||||
【节点在<server>中唯一】
|
【节点在<server>中唯一】
|
||||||
当Server为HTTP协议时, request节点才有效。
|
当Server为HTTP协议时, request节点才有效。
|
||||||
remoteaddr 节点: 替换请求方节点的IP地址, 通常请求方是由nginx等web静态服务器转发过的则需要配置该节点。
|
remoteaddr 节点: 替换请求方节点的IP地址, 通常请求方是由nginx等web静态服务器转发过的则需要配置该节点。
|
||||||
且value值只能是以request.headers.开头,表示从request.headers中获取对应的header值。
|
且value值只能是以request.headers.开头,表示从request.headers中获取对应的header值, 多个header用逗号隔开。
|
||||||
locale value值必须是request.headers.或request.parameters.开头。
|
locale value值必须是request.headers.或request.parameters.开头。
|
||||||
例如下面例子获取request.getRemoteAddr()值,如果header存在X-RemoteAddress值则返回X-RemoteAddress值,不存在返回getRemoteAddress()。
|
例如下面例子获取request.getRemoteAddr()值,如果header存在X-RemoteAddress值则返回X-RemoteAddress值,不存在返回getRemoteAddress()。
|
||||||
-->
|
-->
|
||||||
<request>
|
<request>
|
||||||
<remoteaddr value="request.headers.X-RemoteAddress"/>
|
<remoteaddr value="request.headers.X-RemoteAddress,X-Forwarded-For"/>
|
||||||
<locale value="request.headers.locale" />
|
<locale value="request.headers.locale" />
|
||||||
<rpc authenticator="org.redkale.net.http.HttpRpcAuthenticator的实现类"/>
|
<rpc authenticator="org.redkale.net.http.HttpRpcAuthenticator的实现类"/>
|
||||||
</request>
|
</request>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import java.lang.annotation.*;
|
|||||||
* @since Common Annotations 1.0
|
* @since Common Annotations 1.0
|
||||||
* @since 2.8.0
|
* @since 2.8.0
|
||||||
*/
|
*/
|
||||||
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
|
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
public @interface Resource {
|
public @interface Resource {
|
||||||
|
|
||||||
|
|||||||
@@ -414,6 +414,7 @@ public final class ClassFilter<T> {
|
|||||||
* 一个*表示包的一个层级, 两个*表示包的多层级
|
* 一个*表示包的一个层级, 两个*表示包的多层级
|
||||||
* 例如:
|
* 例如:
|
||||||
* *.platf.** 转成 ^(\w+)\.platf\.(.*)$
|
* *.platf.** 转成 ^(\w+)\.platf\.(.*)$
|
||||||
|
* .platf. 转成 ^(.*)\.platf\.(.*)$
|
||||||
*
|
*
|
||||||
* @param regex 正则表达式
|
* @param regex 正则表达式
|
||||||
* @return Pattern
|
* @return Pattern
|
||||||
@@ -422,6 +423,9 @@ public final class ClassFilter<T> {
|
|||||||
if (regex.indexOf('^') >= 0 || regex.indexOf('$') >= 0 || regex.indexOf('\\') >= 0) { // 已经是标准正则表达式
|
if (regex.indexOf('^') >= 0 || regex.indexOf('$') >= 0 || regex.indexOf('\\') >= 0) { // 已经是标准正则表达式
|
||||||
return regex;
|
return regex;
|
||||||
}
|
}
|
||||||
|
if (regex.startsWith(".") && regex.endsWith(".")) { // .platf.
|
||||||
|
regex = "**" + regex + "**";
|
||||||
|
}
|
||||||
String str = regex.replace("**", sxing).replace("*", dxing);
|
String str = regex.replace("**", sxing).replace("*", dxing);
|
||||||
str = str.replace("\\.", dian).replace(".", dian);
|
str = str.replace("\\.", dian).replace(".", dian);
|
||||||
return "^" + str.replace(dian, "\\.").replace(dxing, "(\\w+)").replace(sxing, "(.*)") + "$";
|
return "^" + str.replace(dian, "\\.").replace(dxing, "(\\w+)").replace(sxing, "(.*)") + "$";
|
||||||
|
|||||||
@@ -157,7 +157,7 @@ public class CacheClusterAgent extends ClusterAgent implements Resourcable {
|
|||||||
checkApplicationHealth();
|
checkApplicationHealth();
|
||||||
checkHttpAddressHealth();
|
checkHttpAddressHealth();
|
||||||
loadSncpAddressHealth();
|
loadSncpAddressHealth();
|
||||||
long e = System.currentTimeMillis() - s;
|
long e = (System.currentTimeMillis() - s) / 1000;
|
||||||
if (e >= ttls * 9 / 10) {
|
if (e >= ttls * 9 / 10) {
|
||||||
logger.log(Level.WARNING, getClass().getSimpleName() + ".schedule check-slower cost " + e + " ms");
|
logger.log(Level.WARNING, getClass().getSimpleName() + ".schedule check-slower cost " + e + " ms");
|
||||||
} else if (e >= ttls / 2) {
|
} else if (e >= ttls / 2) {
|
||||||
|
|||||||
Reference in New Issue
Block a user