ClassFilter.toPattern优化

This commit is contained in:
redkale
2024-07-24 22:32:28 +08:00
parent 15cd481713
commit c357373310
4 changed files with 8 additions and 4 deletions

View File

@@ -271,12 +271,12 @@ serviceid1_name1 serviceid1_name2 serviceid2_name1 serviceid2_name2
【节点在<server>中唯一】
当Server为HTTP协议时, request节点才有效。
remoteaddr 节点: 替换请求方节点的IP地址 通常请求方是由nginx等web静态服务器转发过的则需要配置该节点。
且value值只能是以request.headers.开头表示从request.headers中获取对应的header值。
且value值只能是以request.headers.开头表示从request.headers中获取对应的header值, 多个header用逗号隔开
locale value值必须是request.headers.或request.parameters.开头。
例如下面例子获取request.getRemoteAddr()值如果header存在X-RemoteAddress值则返回X-RemoteAddress值不存在返回getRemoteAddress()。
-->
<request>
<remoteaddr value="request.headers.X-RemoteAddress"/>
<remoteaddr value="request.headers.X-RemoteAddress,X-Forwarded-For"/>
<locale value="request.headers.locale" />
<rpc authenticator="org.redkale.net.http.HttpRpcAuthenticator的实现类"/>
</request>

View File

@@ -15,7 +15,7 @@ import java.lang.annotation.*;
* @since Common Annotations 1.0
* @since 2.8.0
*/
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
@Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface Resource {

View File

@@ -414,6 +414,7 @@ public final class ClassFilter<T> {
* 一个*表示包的一个层级, 两个*表示包的多层级
* 例如:
* *.platf.** 转成 ^(\w+)\.platf\.(.*)$
* .platf. 转成 ^(.*)\.platf\.(.*)$
*
* @param regex 正则表达式
* @return Pattern
@@ -422,6 +423,9 @@ public final class ClassFilter<T> {
if (regex.indexOf('^') >= 0 || regex.indexOf('$') >= 0 || regex.indexOf('\\') >= 0) { // 已经是标准正则表达式
return regex;
}
if (regex.startsWith(".") && regex.endsWith(".")) { // .platf.
regex = "**" + regex + "**";
}
String str = regex.replace("**", sxing).replace("*", dxing);
str = str.replace("\\.", dian).replace(".", dian);
return "^" + str.replace(dian, "\\.").replace(dxing, "(\\w+)").replace(sxing, "(.*)") + "$";

View File

@@ -157,7 +157,7 @@ public class CacheClusterAgent extends ClusterAgent implements Resourcable {
checkApplicationHealth();
checkHttpAddressHealth();
loadSncpAddressHealth();
long e = System.currentTimeMillis() - s;
long e = (System.currentTimeMillis() - s) / 1000;
if (e >= ttls * 9 / 10) {
logger.log(Level.WARNING, getClass().getSimpleName() + ".schedule check-slower cost " + e + " ms");
} else if (e >= ttls / 2) {