This commit is contained in:
RedKale
2016-04-08 17:45:45 +08:00
parent 45afb89e5a
commit c4434f04c3
3 changed files with 19 additions and 16 deletions

View File

@@ -5,21 +5,17 @@
*/ */
package org.redkale.boot; package org.redkale.boot;
import org.redkale.net.http.WebServlet;
import org.redkale.net.http.HttpServer;
import org.redkale.net.http.HttpServlet;
import org.redkale.util.AnyValue;
import org.redkale.boot.ClassFilter.FilterEntry;
import org.redkale.util.AnyValue.DefaultAnyValue;
import java.lang.reflect.*; import java.lang.reflect.*;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.util.*; import java.util.*;
import java.util.logging.*; import java.util.logging.Level;
import javax.annotation.*; import javax.annotation.Resource;
import org.redkale.boot.ClassFilter.FilterEntry;
import org.redkale.net.*; import org.redkale.net.*;
import org.redkale.net.http.*; import org.redkale.net.http.*;
import org.redkale.net.sncp.*; import org.redkale.net.sncp.Sncp;
import org.redkale.service.*; import org.redkale.service.*;
import org.redkale.util.AnyValue.DefaultAnyValue;
import org.redkale.util.*; import org.redkale.util.*;
/** /**
@@ -68,7 +64,7 @@ public final class NodeHttpServer extends NodeServer {
private void initWebSocketService() { private void initWebSocketService() {
final NodeServer self = this; final NodeServer self = this;
final ResourceFactory regFactory = application.getResourceFactory(); final ResourceFactory regFactory = application.getResourceFactory();
resourceFactory.add(WebSocketNode.class, (ResourceFactory rf, final Object src, final String resourceName, Field field, Object attachment) -> { //主要用于单点的服务 resourceFactory.register((ResourceFactory rf, final Object src, final String resourceName, Field field, Object attachment) -> { //主要用于单点的服务
try { try {
if (field.getAnnotation(Resource.class) == null) return; if (field.getAnnotation(Resource.class) == null) return;
if (!(src instanceof WebSocketServlet)) return; if (!(src instanceof WebSocketServlet)) return;
@@ -85,7 +81,7 @@ public final class NodeHttpServer extends NodeServer {
} catch (Exception e) { } catch (Exception e) {
logger.log(Level.SEVERE, "WebSocketNode inject error", e); logger.log(Level.SEVERE, "WebSocketNode inject error", e);
} }
}); }, WebSocketNode.class);
} }
protected void loadHttpServlet(final AnyValue conf, final ClassFilter<? extends Servlet> filter) throws Exception { protected void loadHttpServlet(final AnyValue conf, final ClassFilter<? extends Servlet> filter) throws Exception {

View File

@@ -160,7 +160,7 @@ public abstract class NodeServer {
final NodeServer self = this; final NodeServer self = this;
//--------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------
final ResourceFactory appResFactory = application.getResourceFactory(); final ResourceFactory appResFactory = application.getResourceFactory();
resourceFactory.add(DataSource.class, (ResourceFactory rf, final Object src, String resourceName, Field field, final Object attachment) -> { resourceFactory.register((ResourceFactory rf, final Object src, String resourceName, Field field, final Object attachment) -> {
try { try {
if (field.getAnnotation(Resource.class) == null) return; if (field.getAnnotation(Resource.class) == null) return;
if ((src instanceof Service) && Sncp.isRemote((Service) src)) return; //远程模式不得注入 DataSource if ((src instanceof Service) && Sncp.isRemote((Service) src)) return; //远程模式不得注入 DataSource
@@ -203,8 +203,8 @@ public abstract class NodeServer {
} catch (Exception e) { } catch (Exception e) {
logger.log(Level.SEVERE, "DataSource inject error", e); logger.log(Level.SEVERE, "DataSource inject error", e);
} }
}); },DataSource.class);
resourceFactory.add(CacheSource.class, (ResourceFactory rf, final Object src, final String resourceName, Field field, final Object attachment) -> { resourceFactory.register((ResourceFactory rf, final Object src, final String resourceName, Field field, final Object attachment) -> {
try { try {
if (field.getAnnotation(Resource.class) == null) return; if (field.getAnnotation(Resource.class) == null) return;
if ((src instanceof Service) && Sncp.isRemote((Service) src)) return; //远程模式不得注入 CacheSource if ((src instanceof Service) && Sncp.isRemote((Service) src)) return; //远程模式不得注入 CacheSource
@@ -252,7 +252,7 @@ public abstract class NodeServer {
} catch (Exception e) { } catch (Exception e) {
logger.log(Level.SEVERE, "DataSource inject error", e); logger.log(Level.SEVERE, "DataSource inject error", e);
} }
}); },CacheSource.class);
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")

View File

@@ -69,11 +69,18 @@ public final class ResourceFactory {
return (A) register(autoSync, "", rs); return (A) register(autoSync, "", rs);
} }
public void add(final Type clazz, final ResourceLoader rs) { public void register(final Type clazz, final ResourceLoader rs) {
if (clazz == null || rs == null) return; if (clazz == null || rs == null) return;
loadermap.put(clazz, rs); loadermap.put(clazz, rs);
} }
public void register(final ResourceLoader rs, final Type... clazzs) {
if (clazzs == null || rs == null) return;
for (Type clazz : clazzs) {
loadermap.put(clazz, rs);
}
}
public void register(final String name, final boolean value) { public void register(final String name, final boolean value) {
register(true, name, boolean.class, value); register(true, name, boolean.class, value);
} }