From a75c8b0282bf9b5ff98fd67a3cbd8cbf038d95a6 Mon Sep 17 00:00:00 2001 From: RedKale <22250530@qq.com> Date: Sat, 18 Jun 2016 13:10:16 +0800 Subject: [PATCH] --- src/org/redkale/boot/NodeServer.java | 22 ++++++++++++------- .../redkale/net/http/HttpPrepareServlet.java | 12 ++++++++-- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/org/redkale/boot/NodeServer.java b/src/org/redkale/boot/NodeServer.java index a3bf5474f..5dbf35cf9 100644 --- a/src/org/redkale/boot/NodeServer.java +++ b/src/org/redkale/boot/NodeServer.java @@ -29,7 +29,7 @@ import org.redkale.util.*; /** * Server节点的初始化配置类 - * + *

*

* 详情见: http://redkale.org * @@ -61,22 +61,22 @@ public abstract class NodeServer { //当前Server的SNCP协议的组 private String sncpGroup = null; - + //SNCP服务的地址, 非SNCP为null private InetSocketAddress sncpAddress; - + //加载Service时的处理函数 protected Consumer consumer; - + //server节点的配置 protected AnyValue serverConf; - + //加载server节点后的拦截器 protected NodeInterceptor interceptor; //本地模式的Service对象集合 protected final Set localServiceWrappers = new LinkedHashSet<>(); - + //远程模式的Service对象集合 protected final Set remoteServiceWrappers = new LinkedHashSet<>(); @@ -157,7 +157,7 @@ public abstract class NodeServer { Class clazz = forName(interceptorClass); this.interceptor = (NodeInterceptor) clazz.newInstance(); } - + ClassFilter servletFilter = createServletClassFilter(); ClassFilter serviceFilter = createServiceClassFilter(); long s = System.currentTimeMillis(); @@ -170,6 +170,8 @@ public abstract class NodeServer { logger.info(this.getClass().getSimpleName() + " load filter class in " + e + " ms"); loadService(serviceFilter); //必须在servlet之前 loadServlet(servletFilter); + + if (this.interceptor != null) this.resourceFactory.inject(this.interceptor); } protected abstract void loadServlet(ClassFilter servletFilter) throws Exception; @@ -384,7 +386,7 @@ public abstract class NodeServer { } protected ClassFilter createClassFilter(final String localGroup, Class ref, - Class inter, Class ref2, String properties, String property) { + Class inter, Class ref2, String properties, String property) { ClassFilter cf = new ClassFilter(ref, inter, null); if (properties == null && properties == null) return cf; if (this.serverConf == null) return cf; @@ -454,6 +456,10 @@ public abstract class NodeServer { return sncpAddress; } + public AnyValue getServerConf() { + return serverConf; + } + public String getSncpGroup() { return sncpGroup; } diff --git a/src/org/redkale/net/http/HttpPrepareServlet.java b/src/org/redkale/net/http/HttpPrepareServlet.java index 3e6faa968..9c931416c 100644 --- a/src/org/redkale/net/http/HttpPrepareServlet.java +++ b/src/org/redkale/net/http/HttpPrepareServlet.java @@ -29,6 +29,8 @@ public final class HttpPrepareServlet extends PrepareServlet mapStrings = new HashMap<>(); + @Override public void init(HttpContext context, AnyValue config) { this.servlets.forEach(s -> { @@ -89,6 +91,10 @@ public final class HttpPrepareServlet extends PrepareServlet(Pattern.compile(mapping).asPredicate(), servlet); } } else if (mapping != null && !mapping.isEmpty()) { - this.mappings.put(mapping, servlet); + super.mappings.put(mapping, servlet); } + this.mapStrings.put(mapping, servlet.getClass()); } setServletConf(servlet, conf); - servlet._prefix = prefix == null ? "" : prefix.toString(); + servlet._prefix = prefix.toString(); this.servlets.add(servlet); } @@ -139,6 +146,7 @@ public final class HttpPrepareServlet extends PrepareServlet