From a206ecd76b3beba10c995c71057f2380d741d9b1 Mon Sep 17 00:00:00 2001 From: Redkale <22250530@qq.com> Date: Tue, 30 Aug 2016 02:13:56 +0800 Subject: [PATCH] --- src/org/redkale/boot/NodeHttpServer.java | 4 ++-- src/org/redkale/boot/NodeServer.java | 5 ++--- src/org/redkale/boot/NodeSncpServer.java | 2 +- src/org/redkale/net/http/HttpServer.java | 10 +++++++--- src/org/redkale/net/sncp/SncpServer.java | 20 ++++++++++++------- .../test/rest/_DynHelloRestServlet1.java | 4 ++-- test/org/redkale/test/sncp/SncpTest.java | 4 ++-- test/org/redkale/test/sncp/SncpTestBean.java | 1 + 8 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/org/redkale/boot/NodeHttpServer.java b/src/org/redkale/boot/NodeHttpServer.java index 6e2f8aa98..6be9049de 100644 --- a/src/org/redkale/boot/NodeHttpServer.java +++ b/src/org/redkale/boot/NodeHttpServer.java @@ -182,8 +182,8 @@ public class NodeHttpServer extends NodeServer { if (!autoload && !includeValues.contains(stypename)) return; if (!restFilter.accept(stypename)) return; - RestHttpServlet servlet = httpServer.addRestServlet(stype, wrapper.getName(), wrapper.getService(), baseServletClass, prefix, (AnyValue) null); - if (finest) logger.finest("Create RestServlet = " + servlet); + RestHttpServlet servlet = httpServer.addRestServlet(stype, wrapper.getName(), wrapper.getService(), baseServletClass, prefix, sncp, (AnyValue) null); + if (finest) logger.finest("Create RestServlet[resource=" + wrapper.getName() + "] = " + servlet); if (ss != null) { String[] mappings = servlet.getClass().getAnnotation(WebServlet.class).value(); for (int i = 0; i < mappings.length; i++) { diff --git a/src/org/redkale/boot/NodeServer.java b/src/org/redkale/boot/NodeServer.java index bd83a305c..e15808fcb 100644 --- a/src/org/redkale/boot/NodeServer.java +++ b/src/org/redkale/boot/NodeServer.java @@ -6,7 +6,6 @@ package org.redkale.boot; import java.io.*; -import static java.lang.Class.forName; import java.lang.annotation.Annotation; import java.lang.reflect.*; import java.net.InetSocketAddress; @@ -166,7 +165,7 @@ public abstract class NodeServer { initResource(); //给 DataSource、CacheSource 注册依赖注入时的监听回调事件。 String interceptorClass = this.serverConf.getValue("interceptor", ""); if (!interceptorClass.isEmpty()) { - Class clazz = forName(interceptorClass); + Class clazz = Class.forName(interceptorClass); this.interceptor = (NodeInterceptor) clazz.newInstance(); } @@ -247,7 +246,7 @@ public abstract class NodeServer { NodeSncpServer sncpServer = application.findNodeSncpServer(sncpAddr); Set gs = application.findSncpGroups(sameGroupTransport, diffGroupTransports); ServiceWrapper wrapper = new ServiceWrapper(CacheSourceService.class, (Service) source, resourceName, sncpServer.getSncpGroup(), gs, null); - sncpServer.getSncpServer().addService(wrapper); + sncpServer.getSncpServer().addSncpServlet(wrapper); logger.info("[" + Thread.currentThread().getName() + "] Load Service " + wrapper.getService()); } logger.info("[" + Thread.currentThread().getName() + "] Load Source " + source); diff --git a/src/org/redkale/boot/NodeSncpServer.java b/src/org/redkale/boot/NodeSncpServer.java index 84ba36bc2..a6f664343 100644 --- a/src/org/redkale/boot/NodeSncpServer.java +++ b/src/org/redkale/boot/NodeSncpServer.java @@ -27,7 +27,7 @@ public class NodeSncpServer extends NodeServer { private NodeSncpServer(Application application, AnyValue serconf) { super(application, createServer(application, serconf)); this.sncpServer = (SncpServer) this.server; - this.consumer = sncpServer == null ? null : x -> sncpServer.addService(x); + this.consumer = sncpServer == null ? null : x -> sncpServer.addSncpServlet(x); } public static NodeServer createNodeServer(Application application, AnyValue serconf) { diff --git a/src/org/redkale/net/http/HttpServer.java b/src/org/redkale/net/http/HttpServer.java index 4589a5f2d..1992b2c9f 100644 --- a/src/org/redkale/net/http/HttpServer.java +++ b/src/org/redkale/net/http/HttpServer.java @@ -42,7 +42,12 @@ public final class HttpServer extends Server RestHttpServlet addRestServlet(Class serviceType, - final String name, final S service, final Class baseServletClass, final String prefix, AnyValue conf) { + final String name, final S service, final Class baseServletClass, final String prefix) { + return addRestServlet(serviceType, name, service, baseServletClass, prefix, false, null); + } + + public RestHttpServlet addRestServlet(Class serviceType, + final String name, final S service, final Class baseServletClass, final String prefix, final boolean sncp, AnyValue conf) { RestHttpServlet servlet = null; for (final HttpServlet item : ((HttpPrepareServlet) this.prepare).getServlets()) { if (!(item instanceof RestHttpServlet)) continue; @@ -53,10 +58,9 @@ public final class HttpServer extends Server void addSncpServlet(Class serviceType, String name, T service, AnyValue conf) { + SncpDynServlet sds = new SncpDynServlet(BsonFactory.root().getConvert(), name, serviceType, service); + this.prepare.addServlet(sds, null, conf); + } + public List getSncpServlets() { return ((SncpPrepareServlet) this.prepare).getSncpServlets(); } @@ -56,16 +62,16 @@ public final class SncpServer extends Server bufferPool = new ObjectPool<>(createBufferCounter, cycleBufferCounter, this.bufferPoolSize, - (Object... params) -> ByteBuffer.allocateDirect(rcapacity), null, (e) -> { - if (e == null || e.isReadOnly() || e.capacity() != rcapacity) return false; - e.clear(); - return true; - }); + (Object... params) -> ByteBuffer.allocateDirect(rcapacity), null, (e) -> { + if (e == null || e.isReadOnly() || e.capacity() != rcapacity) return false; + e.clear(); + return true; + }); AtomicLong createResponseCounter = watch == null ? new AtomicLong() : watch.createWatchNumber("SNCP_" + port + ".Response.creatCounter"); AtomicLong cycleResponseCounter = watch == null ? new AtomicLong() : watch.createWatchNumber("SNCP_" + port + ".Response.cycleCounter"); ObjectPool responsePool = SncpResponse.createPool(createResponseCounter, cycleResponseCounter, this.responsePoolSize, null); SncpContext sncpcontext = new SncpContext(this.serverStartTime, this.logger, executor, rcapacity, bufferPool, responsePool, - this.maxbody, this.charset, this.address, this.prepare, this.watch, this.readTimeoutSecond, this.writeTimeoutSecond); + this.maxbody, this.charset, this.address, this.prepare, this.watch, this.readTimeoutSecond, this.writeTimeoutSecond); responsePool.setCreator((Object... params) -> new SncpResponse(sncpcontext, new SncpRequest(sncpcontext))); return sncpcontext; } diff --git a/test/org/redkale/test/rest/_DynHelloRestServlet1.java b/test/org/redkale/test/rest/_DynHelloRestServlet1.java index f0bc56c3d..52f504f03 100644 --- a/test/org/redkale/test/rest/_DynHelloRestServlet1.java +++ b/test/org/redkale/test/rest/_DynHelloRestServlet1.java @@ -23,8 +23,8 @@ public class _DynHelloRestServlet1 extends SimpleRestServlet { HelloService service = new HelloService(); HttpServer server = new HttpServer(); - server.addRestServlet(HelloService.class, "", service, SimpleRestServlet.class, "/pipes", null); - server.addRestServlet(HelloService.class, "my-res", new HelloService(3), SimpleRestServlet.class, "/pipes", null); + server.addRestServlet(HelloService.class, "", service, SimpleRestServlet.class, "/pipes"); + server.addRestServlet(HelloService.class, "my-res", new HelloService(3), SimpleRestServlet.class, "/pipes"); DefaultAnyValue conf = DefaultAnyValue.create("port", "" + port); server.init(conf); diff --git a/test/org/redkale/test/sncp/SncpTest.java b/test/org/redkale/test/sncp/SncpTest.java index 2144846ed..bab9e6382 100644 --- a/test/org/redkale/test/sncp/SncpTest.java +++ b/test/org/redkale/test/sncp/SncpTest.java @@ -154,7 +154,7 @@ public class SncpTest { final Transport transport = new Transport("", WatchFactory.root(), "", newBufferPool(), newChannelGroup(), null, set); SncpTestService service = Sncp.createLocalService("", null, ResourceFactory.root(), SncpTestService.class, addr, transport, null); ResourceFactory.root().inject(service); - server.addService(new ServiceWrapper(service, "", "", new HashSet<>(), null)); + server.addSncpServlet(new ServiceWrapper(service, "", "", new HashSet<>(), null)); System.out.println(service); AnyValue.DefaultAnyValue conf = new AnyValue.DefaultAnyValue(); conf.addValue("host", "0.0.0.0"); @@ -187,7 +187,7 @@ public class SncpTest { //String name, WatchFactory, ObjectPool, AsynchronousChannelGroup, InetSocketAddress clientAddress, Collection final Transport transport = new Transport("", WatchFactory.root(), "", newBufferPool(), newChannelGroup(), null, set); Service service = Sncp.createLocalService("", null, ResourceFactory.root(), SncpTestService.class, addr, transport, null); - server.addService(new ServiceWrapper(service, "", "", new HashSet<>(), null)); + server.addSncpServlet(new ServiceWrapper(service, "", "", new HashSet<>(), null)); AnyValue.DefaultAnyValue conf = new AnyValue.DefaultAnyValue(); conf.addValue("host", "0.0.0.0"); conf.addValue("port", "" + port2); diff --git a/test/org/redkale/test/sncp/SncpTestBean.java b/test/org/redkale/test/sncp/SncpTestBean.java index 77684df5e..9f30d6a31 100644 --- a/test/org/redkale/test/sncp/SncpTestBean.java +++ b/test/org/redkale/test/sncp/SncpTestBean.java @@ -18,6 +18,7 @@ import org.redkale.convert.json.*; public class SncpTestBean implements FilterBean { @Id + @GeneratedValue private long id; private String content;