This commit is contained in:
RedKale
2016-03-14 16:54:10 +08:00
parent 5ece314c8f
commit 4020ff5c19
2 changed files with 17 additions and 18 deletions

View File

@@ -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。
@@ -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;
} }

View File

@@ -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类