Sncp.getServiceType 优化

This commit is contained in:
Redkale
2023-01-27 17:31:00 +08:00
parent a492cbd815
commit 71fb4102f6
9 changed files with 16 additions and 51 deletions

View File

@@ -2437,7 +2437,7 @@ public final class Application {
try { try {
if (source instanceof Service) { if (source instanceof Service) {
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
((Service) source).destroy(Sncp.isSncpDyn((Service) source) ? Sncp.getConf((Service) source) : null); ((Service) source).destroy(Sncp.isSncpDyn((Service) source) ? Sncp.getResourceConf((Service) source) : null);
logger.info(source + " destroy in " + (System.currentTimeMillis() - s) + " ms"); logger.info(source + " destroy in " + (System.currentTimeMillis() - s) + " ms");
// } else { // } else {
// source.getClass().getMethod("close").invoke(source); // source.getClass().getMethod("close").invoke(source);
@@ -2454,7 +2454,7 @@ public final class Application {
try { try {
if (source instanceof Service) { if (source instanceof Service) {
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
((Service) source).destroy(Sncp.isSncpDyn((Service) source) ? Sncp.getConf((Service) source) : null); ((Service) source).destroy(Sncp.isSncpDyn((Service) source) ? Sncp.getResourceConf((Service) source) : null);
logger.info(source + " destroy in " + (System.currentTimeMillis() - s) + " ms"); logger.info(source + " destroy in " + (System.currentTimeMillis() - s) + " ms");
// } else { // } else {
// source.getClass().getMethod("close").invoke(source); // source.getClass().getMethod("close").invoke(source);

View File

@@ -388,7 +388,7 @@ public class NodeHttpServer extends NodeServer {
} }
stream.forEach((service) -> { stream.forEach((service) -> {
try { try {
final Class stype = Sncp.getServiceType(service); final Class stype = Sncp.getResourceType(service);
final String name = Sncp.getResourceName(service); final String name = Sncp.getResourceName(service);
RestService rs = (RestService) stype.getAnnotation(RestService.class); RestService rs = (RestService) stype.getAnnotation(RestService.class);
if (rs == null || rs.ignore()) { if (rs == null || rs.ignore()) {
@@ -430,7 +430,7 @@ public class NodeHttpServer extends NodeServer {
mappings[i] = prefix2 + mappings[i]; mappings[i] = prefix2 + mappings[i];
} }
synchronized (rests) { synchronized (rests) {
rests.add(new AbstractMap.SimpleEntry<>(Sncp.getServiceType(service).getName() + "#" + name, mappings)); rests.add(new AbstractMap.SimpleEntry<>(Sncp.getResourceType(service).getName() + "#" + name, mappings));
} }
} }
} finally { } finally {

View File

@@ -616,7 +616,7 @@ public abstract class NodeServer {
} else { } else {
localServices.stream().forEach(y -> { localServices.stream().forEach(y -> {
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
y.init(Sncp.getConf(y)); y.init(Sncp.getResourceConf(y));
long e = System.currentTimeMillis() - s; long e = System.currentTimeMillis() - s;
String serstr = Sncp.toSimpleString(y, maxNameLength, maxTypeLength); String serstr = Sncp.toSimpleString(y, maxNameLength, maxTypeLength);
if (slist != null) { if (slist != null) {
@@ -847,7 +847,7 @@ public abstract class NodeServer {
if (finest) { if (finest) {
logger.finest(y + " is destroying"); logger.finest(y + " is destroying");
} }
y.destroy(Sncp.getConf(y)); y.destroy(Sncp.getResourceConf(y));
if (finest) { if (finest) {
logger.finest(y + " was destroyed"); logger.finest(y + " was destroyed");
} }

View File

@@ -14,8 +14,8 @@ import java.util.logging.Logger;
import org.redkale.annotation.AutoLoad; import org.redkale.annotation.AutoLoad;
import org.redkale.annotation.*; import org.redkale.annotation.*;
import org.redkale.annotation.ResourceListener; import org.redkale.annotation.ResourceListener;
import static org.redkale.boot.Application.*;
import org.redkale.boot.*; import org.redkale.boot.*;
import static org.redkale.boot.Application.*;
import org.redkale.convert.ConvertDisabled; import org.redkale.convert.ConvertDisabled;
import org.redkale.convert.json.JsonConvert; import org.redkale.convert.json.JsonConvert;
import org.redkale.mq.MessageMultiConsumer; import org.redkale.mq.MessageMultiConsumer;
@@ -403,7 +403,7 @@ public abstract class ClusterAgent {
this.serviceName = generateServiceName(ns, protocol, service); this.serviceName = generateServiceName(ns, protocol, service);
this.checkid = generateCheckId(ns, protocol, service); this.checkid = generateCheckId(ns, protocol, service);
this.checkName = generateCheckName(ns, protocol, service); this.checkName = generateCheckName(ns, protocol, service);
this.serviceType = Sncp.getServiceType(service).getName(); this.serviceType = Sncp.getResourceType(service).getName();
this.protocol = protocol; this.protocol = protocol;
InetSocketAddress addr = ns.getSocketAddress(); InetSocketAddress addr = ns.getSocketAddress();
String host = addr.getHostString(); String host = addr.getHostString();

View File

@@ -282,7 +282,7 @@ public class HttpServer extends Server<String, HttpContext, HttpRequest, HttpRes
T servlet = null; T servlet = null;
final boolean sncp = Sncp.isSncpDyn(service); final boolean sncp = Sncp.isSncpDyn(service);
final String resname = name == null ? (sncp ? Sncp.getResourceName(service) : "") : name; final String resname = name == null ? (sncp ? Sncp.getResourceName(service) : "") : name;
final Class<S> serviceType = Sncp.getServiceType(service); final Class<S> serviceType = Sncp.getResourceType(service);
if (name != null) { if (name != null) {
for (final HttpServlet item : ((HttpDispatcherServlet) this.dispatcher).getServlets()) { for (final HttpServlet item : ((HttpDispatcherServlet) this.dispatcher).getServlets()) {
if (!(item instanceof HttpServlet)) { if (!(item instanceof HttpServlet)) {
@@ -343,7 +343,7 @@ public class HttpServer extends Server<String, HttpContext, HttpRequest, HttpRes
throw new HttpException(serviceType + " generate rest servlet error", e); throw new HttpException(serviceType + " generate rest servlet error", e);
} }
if (first) { if (first) {
this.dispatcher.addServlet(servlet, prefix, sncp ? Sncp.getConf(service) : null); this.dispatcher.addServlet(servlet, prefix, sncp ? Sncp.getResourceConf(service) : null);
} }
return servlet; return servlet;
} }

View File

@@ -299,7 +299,7 @@ public final class Rest {
if (controller != null && !controller.name().isEmpty()) { if (controller != null && !controller.name().isEmpty()) {
return controller.name(); return controller.name();
} }
final Class serviceType = Sncp.getServiceType(service); final Class serviceType = Sncp.getResourceType(service);
return serviceType.getSimpleName().replaceAll("Service.*$", "").toLowerCase(); return serviceType.getSimpleName().replaceAll("Service.*$", "").toLowerCase();
} }

View File

@@ -13,7 +13,6 @@ import java.lang.reflect.*;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.channels.CompletionHandler; import java.nio.channels.CompletionHandler;
import java.security.*;
import java.util.*; import java.util.*;
import org.redkale.annotation.*; import org.redkale.annotation.*;
import org.redkale.annotation.ResourceType; import org.redkale.annotation.ResourceType;
@@ -45,18 +44,6 @@ public abstract class Sncp {
static final String FIELDPREFIX = "_redkale"; static final String FIELDPREFIX = "_redkale";
private static final MessageDigest md5;
static { //64进制
MessageDigest d = null;
try {
d = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException ex) {
ex.printStackTrace();
}
md5 = d;
}
/** /**
* 修饰由SNCP协议动态生成的class、和method * 修饰由SNCP协议动态生成的class、和method
* 本地模式动态生成的_DynLocalXXXXService类会打上&#64;SncpDyn(remote = false) 的注解 * 本地模式动态生成的_DynLocalXXXXService类会打上&#64;SncpDyn(remote = false) 的注解
@@ -126,11 +113,7 @@ public abstract class Sncp {
if (name == null || name.isEmpty()) { if (name == null || name.isEmpty()) {
return Uint128.ZERO; return Uint128.ZERO;
} }
byte[] bytes = name.trim().getBytes(); return Uint128.create(Utility.md5(name.trim().getBytes()));
synchronized (md5) {
bytes = md5.digest(bytes);
}
return Uint128.create(bytes);
} }
public static boolean isRemote(Service service) { public static boolean isRemote(Service service) {
@@ -147,16 +130,10 @@ public abstract class Sncp {
} }
public static int getVersion(Service service) { public static int getVersion(Service service) {
if (service == null) {
return -1;
}
return -1; //暂不实现Version return -1; //暂不实现Version
} }
public static String getResourceName(Service service) { public static String getResourceName(Service service) {
if (service == null) {
return null;
}
Resource res = service.getClass().getAnnotation(Resource.class); Resource res = service.getClass().getAnnotation(Resource.class);
if (res != null) { if (res != null) {
return res.name(); return res.name();
@@ -165,28 +142,16 @@ public abstract class Sncp {
return res2 == null ? null : res2.name(); return res2 == null ? null : res2.name();
} }
public static Class getServiceType(Service service) {
ResourceType rt = service.getClass().getAnnotation(ResourceType.class);
if (rt != null) {
return rt.value();
}
org.redkale.util.ResourceType rt2 = service.getClass().getAnnotation(org.redkale.util.ResourceType.class);
return rt2 == null ? service.getClass() : rt2.value();
}
public static Class getResourceType(Service service) { public static Class getResourceType(Service service) {
if (service == null) {
return null;
}
ResourceType type = service.getClass().getAnnotation(ResourceType.class); ResourceType type = service.getClass().getAnnotation(ResourceType.class);
if (type != null) { if (type != null) {
return type.value(); return type.value();
} }
org.redkale.util.ResourceType rt2 = service.getClass().getAnnotation(org.redkale.util.ResourceType.class); org.redkale.util.ResourceType rt2 = service.getClass().getAnnotation(org.redkale.util.ResourceType.class);
return rt2 == null ? getServiceType(service) : rt2.value(); return rt2 == null ? service.getClass() : rt2.value();
} }
public static AnyValue getConf(Service service) { public static AnyValue getResourceConf(Service service) {
if (service == null || !isSncpDyn(service)) { if (service == null || !isSncpDyn(service)) {
return null; return null;
} }

View File

@@ -111,7 +111,7 @@ public class SncpServer extends Server<Uint128, SncpContext, SncpRequest, SncpRe
} }
SncpDynServlet sds = new SncpDynServlet(BsonFactory.root().getConvert(), Sncp.getResourceName(sncpService), SncpDynServlet sds = new SncpDynServlet(BsonFactory.root().getConvert(), Sncp.getResourceName(sncpService),
Sncp.getResourceType(sncpService), sncpService, maxTypeLength, maxNameLength); Sncp.getResourceType(sncpService), sncpService, maxTypeLength, maxNameLength);
this.dispatcher.addServlet(sds, null, Sncp.getConf(sncpService)); this.dispatcher.addServlet(sds, null, Sncp.getResourceConf(sncpService));
return sds; return sds;
} }

View File

@@ -28,7 +28,7 @@ public abstract class AbstractService implements Service {
* @return Class * @return Class
*/ */
protected Class serviceType() { protected Class serviceType() {
return Sncp.getServiceType(this); return Sncp.getResourceType(this);
} }
/** /**