原生编译:手动注册 SelectorProvider 及其子类;增加 add-opens 参数

This commit is contained in:
songyinyin
2023-10-24 16:40:46 +08:00
parent 2716addc77
commit f8e93a7eaa
4 changed files with 33 additions and 7 deletions
+13
View File
@@ -37,4 +37,17 @@
</dependency>
</dependencies>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>META-INF/native-image/neutrino-proxy-core/*.json</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
@@ -8,7 +8,6 @@ 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;
/**
@@ -23,12 +22,9 @@ public class NeutrinoCoreRuntimeNativeRegistrar implements RuntimeNativeRegistra
metadata.registerReflection(clazz, MemberCategory.INVOKE_DECLARED_METHODS);
}
Set<Class<?>> 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);
metadata.registerArg("--add-opens java.base/java.lang.invoke=ALL-UNNAMED --add-exports=java.base/jdk.internal.misc=ALL-UNNAMED");
}
}
@@ -0,0 +1,18 @@
[
{
"name": "java.nio.channels.spi.SelectorProvider",
"allDeclaredMethods": true
},
{
"name": "sun.nio.ch.KQueueSelectorProvider",
"allDeclaredMethods": true
},
{
"name": "sun.nio.ch.PollSelectorProvider",
"allDeclaredMethods": true
},
{
"name": "sun.nio.ch.SelectorProviderImpl",
"allDeclaredMethods": true
}
]
@@ -49,7 +49,6 @@ public class ProxyConfiguration implements LifecycleBean {
@Bean("tcpServerBossGroup")
public NioEventLoopGroup tcpServerBossGroup(@Inject ProxyConfig proxyConfig) {
ProxyConfig.Server server = proxyConfig.getServer();
System.out.println("==> server:" + server);
ProxyConfig.Tcp tcp = server.getTcp();
return new NioEventLoopGroup(tcp.getBossThreadCount());
}