diff --git a/neutrino-proxy-client/pom.xml b/neutrino-proxy-client/pom.xml
index 7bd9b744..ecb56fd1 100644
--- a/neutrino-proxy-client/pom.xml
+++ b/neutrino-proxy-client/pom.xml
@@ -23,13 +23,6 @@
org.noear
solon-lib
-
-
-
- org.noear
- solon.aot
-
-
diff --git a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/ProxyConfiguration.java b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/ProxyConfiguration.java
index bb4d1d6e..87dda221 100644
--- a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/ProxyConfiguration.java
+++ b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/config/ProxyConfiguration.java
@@ -12,6 +12,7 @@ import io.netty.handler.timeout.IdleStateHandler;
import org.dromara.neutrinoproxy.client.core.*;
import org.dromara.neutrinoproxy.client.util.ProxyUtil;
import org.dromara.neutrinoproxy.core.*;
+import org.dromara.neutrinoproxy.core.aot.NeutrinoCoreRuntimeNativeRegistrar;
import org.dromara.neutrinoproxy.core.dispatcher.DefaultDispatcher;
import org.dromara.neutrinoproxy.core.dispatcher.Dispatcher;
import io.netty.bootstrap.Bootstrap;
@@ -204,4 +205,9 @@ public class ProxyConfiguration implements LifecycleBean {
return bootstrap;
}
+ @Bean
+ public NeutrinoCoreRuntimeNativeRegistrar neutrinoCoreRuntimeNativeRegistrar() {
+ return new NeutrinoCoreRuntimeNativeRegistrar();
+ }
+
}
diff --git a/neutrino-proxy-core/pom.xml b/neutrino-proxy-core/pom.xml
index ce649a9d..04f1befa 100644
--- a/neutrino-proxy-core/pom.xml
+++ b/neutrino-proxy-core/pom.xml
@@ -13,6 +13,13 @@
neutrino-proxy-core
+
+
+ org.noear
+ solon.aot
+
+
+
io.netty
netty-all
diff --git a/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/aot/NeutrinoCoreRuntimeNativeRegistrar.java b/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/aot/NeutrinoCoreRuntimeNativeRegistrar.java
new file mode 100644
index 00000000..2977ca17
--- /dev/null
+++ b/neutrino-proxy-core/src/main/java/org/dromara/neutrinoproxy/core/aot/NeutrinoCoreRuntimeNativeRegistrar.java
@@ -0,0 +1,34 @@
+package org.dromara.neutrinoproxy.core.aot;
+
+import cn.hutool.core.util.ClassUtil;
+import io.netty.channel.SimpleChannelInboundHandler;
+import org.dromara.neutrinoproxy.core.ProxyMessage;
+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 java.nio.channels.spi.SelectorProvider;
+import java.util.Set;
+
+/**
+ * @author songyinyin
+ * @since 2023/10/23 21:33
+ */
+public class NeutrinoCoreRuntimeNativeRegistrar implements RuntimeNativeRegistrar {
+ @Override
+ public void register(AppContext context, RuntimeNativeMetadata metadata) {
+ Set> channelInboundClasses = ClassUtil.scanPackageBySuper("org.dromara.neutrinoproxy", SimpleChannelInboundHandler.class);
+ for (Class> clazz : channelInboundClasses) {
+ metadata.registerReflection(clazz, MemberCategory.INVOKE_DECLARED_METHODS);
+ }
+
+ Set> selectorProviderClasses = ClassUtil.scanPackageBySuper("org.dromara.neutrinoproxy", SelectorProvider.class);
+ for (Class> selectorProviderClass : selectorProviderClasses) {
+ metadata.registerReflection(selectorProviderClass, MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INVOKE_PUBLIC_CONSTRUCTORS);
+ }
+
+ metadata.registerReflection(ProxyMessage.class, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS);
+ metadata.registerReflection(ProxyMessage.UdpBaseInfo.class, MemberCategory.DECLARED_FIELDS, MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INVOKE_DECLARED_CONSTRUCTORS);
+ }
+}
diff --git a/neutrino-proxy-server/pom.xml b/neutrino-proxy-server/pom.xml
index 20f278eb..ae178556 100644
--- a/neutrino-proxy-server/pom.xml
+++ b/neutrino-proxy-server/pom.xml
@@ -55,13 +55,6 @@
com.zaxxer
HikariCP
-
-
-
- org.noear
- solon.aot
-
-
diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java
index cbe1252a..11cfc725 100644
--- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java
+++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java
@@ -9,10 +9,10 @@ import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioDatagramChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.logging.LoggingHandler;
-import io.netty.handler.traffic.ChannelTrafficShapingHandler;
import org.dromara.neutrinoproxy.core.ProxyDataTypeEnum;
import org.dromara.neutrinoproxy.core.ProxyMessage;
import org.dromara.neutrinoproxy.core.ProxyMessageHandler;
+import org.dromara.neutrinoproxy.core.aot.NeutrinoCoreRuntimeNativeRegistrar;
import org.dromara.neutrinoproxy.core.dispatcher.DefaultDispatcher;
import org.dromara.neutrinoproxy.core.dispatcher.Dispatcher;
import io.netty.channel.ChannelHandlerContext;
@@ -128,4 +128,9 @@ public class ProxyConfiguration implements LifecycleBean {
return new NioEventLoopGroup(proxyConfig.getTunnel().getWorkThreadCount());
}
+ @Bean
+ public NeutrinoCoreRuntimeNativeRegistrar neutrinoCoreRuntimeNativeRegistrar() {
+ return new NeutrinoCoreRuntimeNativeRegistrar();
+ }
+
}