This commit is contained in:
@@ -5,9 +5,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.redkale.boot;
|
package org.redkale.boot;
|
||||||
|
|
||||||
import org.redkale.util.AutoLoad;
|
|
||||||
import org.redkale.util.AnyValue;
|
|
||||||
import org.redkale.util.AnyValue.DefaultAnyValue;
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
import java.lang.reflect.*;
|
import java.lang.reflect.*;
|
||||||
@@ -17,6 +14,9 @@ import java.util.concurrent.*;
|
|||||||
import java.util.jar.*;
|
import java.util.jar.*;
|
||||||
import java.util.logging.*;
|
import java.util.logging.*;
|
||||||
import java.util.regex.*;
|
import java.util.regex.*;
|
||||||
|
import org.redkale.util.AnyValue;
|
||||||
|
import org.redkale.util.AnyValue.DefaultAnyValue;
|
||||||
|
import org.redkale.util.AutoLoad;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* class过滤器, 符合条件的class会保留下来存入FilterEntry。
|
* class过滤器, 符合条件的class会保留下来存入FilterEntry。
|
||||||
@@ -82,7 +82,7 @@ public final class ClassFilter<T> {
|
|||||||
/**
|
/**
|
||||||
* 自动扫描地过滤指定的class
|
* 自动扫描地过滤指定的class
|
||||||
*
|
*
|
||||||
* @param property AnyValue
|
* @param property AnyValue
|
||||||
* @param clazzname String
|
* @param clazzname String
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@@ -93,9 +93,9 @@ public final class ClassFilter<T> {
|
|||||||
/**
|
/**
|
||||||
* 过滤指定的class
|
* 过滤指定的class
|
||||||
*
|
*
|
||||||
* @param property application.xml中对应class节点下的property属性项
|
* @param property application.xml中对应class节点下的property属性项
|
||||||
* @param clazzname class名称
|
* @param clazzname class名称
|
||||||
* @param autoscan 为true表示自动扫描的, false表示显著调用filter, AutoLoad的注解将被忽略
|
* @param autoscan 为true表示自动扫描的, false表示显著调用filter, AutoLoad的注解将被忽略
|
||||||
*/
|
*/
|
||||||
public final void filter(AnyValue property, String clazzname, boolean autoscan) {
|
public final void filter(AnyValue property, String clazzname, boolean autoscan) {
|
||||||
boolean r = accept0(property, clazzname);
|
boolean r = accept0(property, clazzname);
|
||||||
@@ -152,7 +152,7 @@ public final class ClassFilter<T> {
|
|||||||
/**
|
/**
|
||||||
* 判断class是否有效
|
* 判断class是否有效
|
||||||
*
|
*
|
||||||
* @param property AnyValue
|
* @param property AnyValue
|
||||||
* @param classname String
|
* @param classname String
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
@@ -191,7 +191,7 @@ public final class ClassFilter<T> {
|
|||||||
* 判断class是否有效
|
* 判断class是否有效
|
||||||
*
|
*
|
||||||
* @param property AnyValue
|
* @param property AnyValue
|
||||||
* @param clazz Class
|
* @param clazz Class
|
||||||
* @param autoscan boolean
|
* @param autoscan boolean
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
@@ -283,7 +283,7 @@ public final class ClassFilter<T> {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return this.getClass().getSimpleName() + "[thread=" + Thread.currentThread().getName()
|
return this.getClass().getSimpleName() + "[thread=" + Thread.currentThread().getName()
|
||||||
+ ", type=" + this.type.getSimpleName() + ", name=" + name + ", groups=" + groups + "]";
|
+ ", type=" + this.type.getSimpleName() + ", name=" + name + ", groups=" + groups + "]";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -310,6 +310,10 @@ public final class ClassFilter<T> {
|
|||||||
return property;
|
return property;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isEmptyGroups() {
|
||||||
|
return groups == null || groups.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
public HashSet<String> getGroups() {
|
public HashSet<String> getGroups() {
|
||||||
return groups;
|
return groups;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,14 +5,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.redkale.boot;
|
package org.redkale.boot;
|
||||||
|
|
||||||
import static org.redkale.boot.Application.*;
|
|
||||||
import org.redkale.boot.ClassFilter.FilterEntry;
|
|
||||||
import org.redkale.net.sncp.ServiceWrapper;
|
|
||||||
import org.redkale.net.Server;
|
|
||||||
import org.redkale.net.sncp.Sncp;
|
|
||||||
import org.redkale.service.Service;
|
|
||||||
import org.redkale.util.AnyValue;
|
|
||||||
import org.redkale.util.AnyValue.DefaultAnyValue;
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.lang.annotation.Annotation;
|
import java.lang.annotation.Annotation;
|
||||||
import java.lang.reflect.*;
|
import java.lang.reflect.*;
|
||||||
@@ -25,11 +17,14 @@ import java.util.logging.*;
|
|||||||
import java.util.stream.*;
|
import java.util.stream.*;
|
||||||
import javax.annotation.*;
|
import javax.annotation.*;
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
import static org.redkale.boot.Application.*;
|
||||||
|
import org.redkale.boot.ClassFilter.FilterEntry;
|
||||||
import org.redkale.net.*;
|
import org.redkale.net.*;
|
||||||
import org.redkale.net.sncp.*;
|
import org.redkale.net.sncp.*;
|
||||||
import org.redkale.service.*;
|
import org.redkale.service.*;
|
||||||
import org.redkale.source.*;
|
import org.redkale.source.*;
|
||||||
import org.redkale.util.*;
|
import org.redkale.util.*;
|
||||||
|
import org.redkale.util.AnyValue.DefaultAnyValue;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -276,7 +271,7 @@ public abstract class NodeServer {
|
|||||||
final HashSet<String> groups = entry.getGroups(); //groups.isEmpty()表示<services>没有配置groups属性。
|
final HashSet<String> groups = entry.getGroups(); //groups.isEmpty()表示<services>没有配置groups属性。
|
||||||
if (groups.isEmpty() && isSNCP() && this.sncpGroup != null) groups.add(this.sncpGroup);
|
if (groups.isEmpty() && isSNCP() && this.sncpGroup != null) groups.add(this.sncpGroup);
|
||||||
|
|
||||||
final boolean localed = (this.sncpAddress == null && !type.isInterface() && !Modifier.isAbstract(type.getModifiers())) //非SNCP的Server,通常是单点服务
|
final boolean localed = (this.sncpAddress == null && entry.isEmptyGroups() && !type.isInterface() && !Modifier.isAbstract(type.getModifiers())) //非SNCP的Server,通常是单点服务
|
||||||
|| groups.contains(this.sncpGroup) //本地IP含在内的
|
|| groups.contains(this.sncpGroup) //本地IP含在内的
|
||||||
|| type.getAnnotation(LocalService.class) != null;//本地模式
|
|| type.getAnnotation(LocalService.class) != null;//本地模式
|
||||||
if (localed && (type.isInterface() || Modifier.isAbstract(type.getModifiers()))) continue; //本地模式不能实例化接口和抽象类的Service类
|
if (localed && (type.isInterface() || Modifier.isAbstract(type.getModifiers()))) continue; //本地模式不能实例化接口和抽象类的Service类
|
||||||
|
|||||||
Reference in New Issue
Block a user