diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/NeutrinoServerRuntimeNativeRegistrar.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/NeutrinoServerRuntimeNativeRegistrar.java index c1eb6fe7..676901ec 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/NeutrinoServerRuntimeNativeRegistrar.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/NeutrinoServerRuntimeNativeRegistrar.java @@ -1,12 +1,8 @@ package org.dromara.neutrinoproxy.server.base; -import org.apache.ibatis.io.DefaultVFS; -import org.apache.ibatis.io.JBoss6VFS; -import org.apache.ibatis.solon.MybatisAdapter; -import org.apache.ibatis.solon.integration.MybatisAdapterDefault; -import org.apache.ibatis.solon.integration.MybatisAdapterManager; import org.dromara.neutrinoproxy.server.base.proxy.ProxyConfig; import org.dromara.neutrinoproxy.server.base.rest.ResponseBody; +import org.dromara.neutrinoproxy.server.controller.res.report.HomeDataView; import org.dromara.neutrinoproxy.server.dal.ClientConnectRecordMapper; import org.dromara.neutrinoproxy.server.dal.FlowReportDayMapper; import org.dromara.neutrinoproxy.server.dal.FlowReportHourMapper; @@ -30,22 +26,11 @@ import org.dromara.neutrinoproxy.server.service.ReportService; import org.dromara.neutrinoproxy.server.service.UserLoginRecordService; import org.dromara.neutrinoproxy.server.service.UserService; import org.dromara.solonplugins.job.JobBean; -import org.noear.solon.Solon; -import org.noear.solon.Utils; import org.noear.solon.annotation.Component; import org.noear.solon.aot.RuntimeNativeMetadata; import org.noear.solon.aot.RuntimeNativeRegistrar; import org.noear.solon.aot.hint.MemberCategory; import org.noear.solon.core.AppContext; -import org.noear.solon.core.util.GenericUtil; -import org.noear.solon.core.util.ResourceUtil; -import org.noear.solon.core.wrap.MethodWrap; -import org.noear.solon.core.wrap.ParamWrap; - -import java.lang.reflect.Method; -import java.lang.reflect.Type; -import java.util.Collection; -import java.util.Map; /** * native 打包 @@ -84,30 +69,14 @@ public class NeutrinoServerRuntimeNativeRegistrar implements RuntimeNativeRegist metadata.registerLambdaSerialization(UserMapper.class); metadata.registerLambdaSerialization(UserTokenMapper.class); - - // mybatis - metadata.registerReflection(JBoss6VFS.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); - metadata.registerReflection(DefaultVFS.class, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); - - Collection> classes = ResourceUtil.scanClasses("org.dromara.neutrinoproxy.server.dal.entity.*"); - for (Class clazz : classes) { - metadata.registerReflection(clazz, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS); - metadata.registerDefaultConstructor(clazz); - } - - for (String name : MybatisAdapterManager.getAll().keySet()) { - //用 name 找,避免出现重复的(默认的name=null) - if (Utils.isNotEmpty(name)) { - MybatisAdapter adapter = MybatisAdapterManager.getOnly(name); - if (adapter instanceof MybatisAdapterDefault) { - registerMybatisAdapter(context, metadata, (MybatisAdapterDefault) adapter); - } - } - } - - Solon.context().methodForeach(method -> { - processMethod(metadata, method); - }); + metadata.registerReflection(HomeDataView.class, MemberCategory.DECLARED_FIELDS); + metadata.registerReflection(HomeDataView.Last7dFlow.class, MemberCategory.DECLARED_FIELDS); + metadata.registerReflection(HomeDataView.License.class, MemberCategory.DECLARED_FIELDS); + metadata.registerReflection(HomeDataView.PortMapping.class, MemberCategory.DECLARED_FIELDS); + metadata.registerReflection(HomeDataView.Series.class, MemberCategory.DECLARED_FIELDS); + metadata.registerReflection(HomeDataView.SingleDayFlow.class, MemberCategory.DECLARED_FIELDS); + metadata.registerReflection(HomeDataView.TodayFlow.class, MemberCategory.DECLARED_FIELDS); + metadata.registerReflection(HomeDataView.TotalFlow.class, MemberCategory.DECLARED_FIELDS); metadata.registerReflection(ResponseBody.class, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS); metadata.registerSerialization(ResponseBody.class); @@ -122,52 +91,4 @@ public class NeutrinoServerRuntimeNativeRegistrar implements RuntimeNativeRegist } - /** - * 注册 mybatis 的 mapper 用到的 DO - */ - protected void registerMybatisAdapter(AppContext context, RuntimeNativeMetadata metadata, MybatisAdapterDefault bean) { - - //注册 mapper 代理 - for (Class clz : bean.getConfiguration().getMapperRegistry().getMappers()) { - metadata.registerJdkProxy(clz); - metadata.registerReflection(clz, MemberCategory.INTROSPECT_PUBLIC_METHODS); - Method[] declaredMethods = clz.getDeclaredMethods(); - for (Method method : declaredMethods) { - MethodWrap methodWrap = new MethodWrap(context, method); - processMethod(metadata, methodWrap); - } - } - } - - /** - * 注册方法,包括参数的类型、泛型和返回值类型、泛型 - */ - private void processMethod(RuntimeNativeMetadata metadata, MethodWrap method) { - ParamWrap[] paramWraps = method.getParamWraps(); - for (ParamWrap paramWrap : paramWraps) { - Class paramType = paramWrap.getType(); - if (!paramType.getName().startsWith("java.")) { - metadata.registerReflection(paramType, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS); - } - - Type genericType = paramWrap.getGenericType(); - processGenericType(metadata, genericType); - } - - Class returnType = method.getReturnType(); - if (!returnType.getName().startsWith("java.")) { - metadata.registerReflection(returnType, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS); - } - Type genericReturnType = method.getGenericReturnType(); - processGenericType(metadata, genericReturnType); - } - - private void processGenericType(RuntimeNativeMetadata metadata, Type genericType) { - Map genericInfo = GenericUtil.getGenericInfo(genericType); - for (Map.Entry entry : genericInfo.entrySet()) { - if (!entry.getValue().getTypeName().startsWith("java.")) { - metadata.registerReflection(entry.getValue().getTypeName(), MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS, MemberCategory.INVOKE_DECLARED_METHODS); - } - } - } } diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/core/ProxyTunnelServer.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/core/ProxyTunnelServer.java index adec249c..d45d2a25 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/core/ProxyTunnelServer.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/core/ProxyTunnelServer.java @@ -18,6 +18,7 @@ import org.noear.solon.annotation.Component; import org.noear.solon.annotation.Inject; import org.noear.solon.core.event.AppLoadEndEvent; import org.noear.solon.core.event.EventListener; +import org.noear.solon.core.runtime.NativeDetector; import javax.net.ssl.KeyManagerFactory; import javax.net.ssl.SSLContext; @@ -42,8 +43,11 @@ public class ProxyTunnelServer implements EventListener { private NioEventLoopGroup serverWorkerGroup; @Override public void onEvent(AppLoadEndEvent appLoadEndEvent) throws Throwable { - startProxyServer(); - startProxyServerForSSL(); + // aot 阶段,不启动代理服务 + if (NativeDetector.isNotAotRuntime()) { + startProxyServer(); + startProxyServerForSSL(); + } } /** * 启动代理服务 diff --git a/pom.xml b/pom.xml index b29dc5f5..e2bb109d 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ org.noear solon-parent - 2.5.10 + 2.5.11-SNAPSHOT @@ -28,7 +28,7 @@ UTF-8 1.1-SNAPSHOT - 0.9.27 + 0.9.28 17 3.8.0