原生编译:手动注册 SelectorProvider 及其子类;增加 add-opens 参数
This commit is contained in:
@@ -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>
|
||||
|
||||
+2
-6
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
+18
@@ -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
|
||||
}
|
||||
]
|
||||
-1
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user