From 8a4ebbec17b8d38332be273241a1b5482fbb02ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9C=B0=E5=B9=B3=E7=BA=BF?= <22250530@qq.com> Date: Mon, 26 Oct 2015 16:41:50 +0800 Subject: [PATCH] --- src/com/wentch/redkale/boot/NodeServer.java | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/com/wentch/redkale/boot/NodeServer.java b/src/com/wentch/redkale/boot/NodeServer.java index fda7171d5..e06ceabf7 100644 --- a/src/com/wentch/redkale/boot/NodeServer.java +++ b/src/com/wentch/redkale/boot/NodeServer.java @@ -75,10 +75,25 @@ public abstract class NodeServer { protected Consumer getExecutor() throws Exception { if (server == null) return null; - Field field = Server.class.getDeclaredField("context"); + final Field field = Server.class.getDeclaredField("context"); field.setAccessible(true); - Context context = (Context) field.get(server); - return (x) -> context.submit(x); + return new Consumer() { + + private Context context; + + @Override + public void accept(Runnable t) { + if (context == null && server != null) { + try { + this.context = (Context) field.get(server); + } catch (Exception e) { + logger.log(Level.SEVERE, "Server (" + server.getSocketAddress() + ") cannot find Context", e); + } + } + context.submit(t); + } + + }; } public static NodeServer create(Class clazz, Application application, AnyValue serconf) {