This commit is contained in:
@@ -223,6 +223,7 @@ public abstract class NodeServer {
|
|||||||
final String threadName = "[" + Thread.currentThread().getName() + "] ";
|
final String threadName = "[" + Thread.currentThread().getName() + "] ";
|
||||||
final Set<FilterEntry<Service>> entrys = serviceFilter.getFilterEntrys();
|
final Set<FilterEntry<Service>> entrys = serviceFilter.getFilterEntrys();
|
||||||
ResourceFactory regFactory = isSNCP() ? application.getResourceFactory() : factory;
|
ResourceFactory regFactory = isSNCP() ? application.getResourceFactory() : factory;
|
||||||
|
final Set<InetSocketAddress> sg = application.findGlobalGroup(this.sncpGroup);
|
||||||
for (FilterEntry<Service> entry : entrys) { //service实现类
|
for (FilterEntry<Service> entry : entrys) { //service实现类
|
||||||
final Class<? extends Service> type = entry.getType();
|
final Class<? extends Service> type = entry.getType();
|
||||||
if (type.isInterface()) continue;
|
if (type.isInterface()) continue;
|
||||||
@@ -232,12 +233,11 @@ public abstract class NodeServer {
|
|||||||
if (type.getAnnotation(Ignore.class) != null) continue;
|
if (type.getAnnotation(Ignore.class) != null) continue;
|
||||||
if (!isSNCP() && factory.find(entry.getName(), type) != null) continue;
|
if (!isSNCP() && factory.find(entry.getName(), type) != null) continue;
|
||||||
final Set<InetSocketAddress> sameGroupAddrs = new LinkedHashSet<>();
|
final Set<InetSocketAddress> sameGroupAddrs = new LinkedHashSet<>();
|
||||||
Set<InetSocketAddress> sg = application.findGlobalGroup(this.sncpGroup);
|
|
||||||
if (sg != null) sameGroupAddrs.addAll(sg);
|
|
||||||
final Map<String, Set<InetSocketAddress>> diffGroupAddrs = new HashMap<>();
|
final Map<String, Set<InetSocketAddress>> diffGroupAddrs = new HashMap<>();
|
||||||
final HashSet<String> groups = entry.getGroups();
|
final HashSet<String> groups = entry.getGroups();
|
||||||
for (String g : groups) {
|
for (String g : groups) {
|
||||||
if (g.isEmpty()) continue;
|
if (g.isEmpty()) continue;
|
||||||
|
if (g.equals(this.sncpGroup) && sg != null) sameGroupAddrs.addAll(sg);
|
||||||
Set<InetSocketAddress> set = application.findGlobalGroup(g);
|
Set<InetSocketAddress> set = application.findGlobalGroup(g);
|
||||||
if (set == null) throw new RuntimeException(type.getName() + " has illegal group (" + groups + ")");
|
if (set == null) throw new RuntimeException(type.getName() + " has illegal group (" + groups + ")");
|
||||||
if (!g.equals(this.sncpGroup)) {
|
if (!g.equals(this.sncpGroup)) {
|
||||||
@@ -258,7 +258,7 @@ public abstract class NodeServer {
|
|||||||
}
|
}
|
||||||
Service service = Sncp.createLocalService(entry.getName(), getExecutor(), type, this.sncpAddress, groups, sameGroupTransports, diffGroupTransports);
|
Service service = Sncp.createLocalService(entry.getName(), getExecutor(), type, this.sncpAddress, groups, sameGroupTransports, diffGroupTransports);
|
||||||
wrapper = new ServiceWrapper(type, service, this.sncpGroup, entry);
|
wrapper = new ServiceWrapper(type, service, this.sncpGroup, entry);
|
||||||
if (fine) logger.fine("[" + Thread.currentThread().getName() + "] Load " + service);
|
if (fine) logger.fine("[" + Thread.currentThread().getName() + "] " + service + " loaded");
|
||||||
} else {
|
} else {
|
||||||
sameGroupAddrs.remove(this.sncpAddress);
|
sameGroupAddrs.remove(this.sncpAddress);
|
||||||
StringBuilder g = new StringBuilder();
|
StringBuilder g = new StringBuilder();
|
||||||
@@ -270,7 +270,7 @@ public abstract class NodeServer {
|
|||||||
if (sameGroupAddrs.isEmpty()) throw new RuntimeException(type.getName() + " has no remote address on group (" + groups + ")");
|
if (sameGroupAddrs.isEmpty()) throw new RuntimeException(type.getName() + " has no remote address on group (" + groups + ")");
|
||||||
Service service = Sncp.createRemoteService(entry.getName(), getExecutor(), type, this.sncpAddress, groups, loadTransport(g.toString(), server.getProtocol(), sameGroupAddrs));
|
Service service = Sncp.createRemoteService(entry.getName(), getExecutor(), type, this.sncpAddress, groups, loadTransport(g.toString(), server.getProtocol(), sameGroupAddrs));
|
||||||
wrapper = new ServiceWrapper(type, service, "", entry);
|
wrapper = new ServiceWrapper(type, service, "", entry);
|
||||||
if (fine) logger.fine("[" + Thread.currentThread().getName() + "] Load " + service);
|
if (fine) logger.fine("[" + Thread.currentThread().getName() + "] " + service + " loaded");
|
||||||
}
|
}
|
||||||
if (factory.find(wrapper.getName(), wrapper.getType()) == null) {
|
if (factory.find(wrapper.getName(), wrapper.getType()) == null) {
|
||||||
regFactory.register(wrapper.getName(), wrapper.getType(), wrapper.getService());
|
regFactory.register(wrapper.getName(), wrapper.getType(), wrapper.getService());
|
||||||
@@ -289,7 +289,7 @@ public abstract class NodeServer {
|
|||||||
localServiceWrappers.add(wrapper);
|
localServiceWrappers.add(wrapper);
|
||||||
if (consumer != null) consumer.accept(wrapper);
|
if (consumer != null) consumer.accept(wrapper);
|
||||||
}
|
}
|
||||||
} else if (isSNCP()) {
|
} else if (isSNCP() && !entry.isAutoload()) {
|
||||||
throw new RuntimeException(ServiceWrapper.class.getSimpleName() + "(class:" + type.getName() + ", name:" + entry.getName() + ", group:" + groups + ") is repeat.");
|
throw new RuntimeException(ServiceWrapper.class.getSimpleName() + "(class:" + type.getName() + ", name:" + entry.getName() + ", group:" + groups + ") is repeat.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -303,6 +303,9 @@ public abstract class NodeServer {
|
|||||||
});
|
});
|
||||||
remoteServiceWrappers.forEach(y -> {
|
remoteServiceWrappers.forEach(y -> {
|
||||||
factory.inject(y.getService());
|
factory.inject(y.getService());
|
||||||
|
if (sb != null) {
|
||||||
|
sb.append(threadName).append("RemoteService(").append(y.getType()).append(':').append(y.getName()).append(") loaded").append(LINE_SEPARATOR);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
//----------------- init -----------------
|
//----------------- init -----------------
|
||||||
localServiceWrappers.parallelStream().forEach(y -> {
|
localServiceWrappers.parallelStream().forEach(y -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user