From 17d91ce45005693a22bb513d8e19607f866339b2 Mon Sep 17 00:00:00 2001 From: kamhung <22250530@qq.com> Date: Mon, 23 Nov 2015 14:06:16 +0800 Subject: [PATCH] --- src/com/wentch/redkale/boot/NodeServer.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/com/wentch/redkale/boot/NodeServer.java b/src/com/wentch/redkale/boot/NodeServer.java index 81959a429..08803e5c5 100644 --- a/src/com/wentch/redkale/boot/NodeServer.java +++ b/src/com/wentch/redkale/boot/NodeServer.java @@ -156,8 +156,24 @@ public abstract class NodeServer { DataSource source = DataSourceFactory.create(rs.name()); application.sources.add(source); regFactory.register(rs.name(), DataSource.class, source); + List sameGroupTransports = sncpSameGroupTransports; + List diffGroupTransports = sncpDiffGroupTransports; + try { + Field ts = src.getClass().getDeclaredField("_sameGroupTransports"); + ts.setAccessible(true); + Transport[] lts = (Transport[]) ts.get(src); + sameGroupTransports = Arrays.asList(lts); + + ts = src.getClass().getDeclaredField("_diffGroupTransports"); + ts.setAccessible(true); + lts = (Transport[]) ts.get(src); + diffGroupTransports = Arrays.asList(lts); + } catch (Exception e) { + logger.log(Level.WARNING, "DataSource inject error " + src, e); + //src 并非 LocaleService 对象 + } if (factory.find(rs.name(), DataCacheListener.class) == null) { - Service cacheListenerService = Sncp.createLocalService(rs.name(), getExecutor(), DataCacheListenerService.class, this.sncpAddress, sncpDefaultGroups, sncpSameGroupTransports, sncpDiffGroupTransports); + Service cacheListenerService = Sncp.createLocalService(rs.name(), getExecutor(), DataCacheListenerService.class, this.sncpAddress, sncpDefaultGroups, sameGroupTransports, diffGroupTransports); regFactory.register(rs.name(), DataCacheListener.class, cacheListenerService); ServiceWrapper wrapper = new ServiceWrapper(DataCacheListenerService.class, cacheListenerService, rs.name(), sncpGroup, sncpDefaultGroups, null); localServiceWrappers.add(wrapper);