在Apache PLC4X项目中,我目前正在为集成测试设置一个框架。PLC4X的Java驱动程序大量使用Netty。我们还构建了大量所谓的“传输”,提供Netty用于通信的通道。其中一个传输是使用EmbeddedChannel的"TestTransport“。我正在努力使这个传输在Netty的引导机制中工作。我被卡住了。如果我不提供EventLoop,Bootstrap会抱怨没有EventLoop。如果我通过覆盖"init”方法从EmbeddedChannel获得EventLoop,EmbeddedChannel会抱怨已经配置了EventLoop。
不幸的是,在Netty的核心中,我需要调整的一切都是某种“私有”、“包私有”和“最终”的。在较新版本的Java中,许多邪恶的反射内容不再可能。
有没有办法用Bootstrap机制配置EmbeddedChannel,因为我不想为了这一个特性而撕裂项目的核心而切换到ChannelFactories……我不想为了完成这项工作而编写大量的Netty代码。
发布于 2020-02-26 21:44:27
不幸的是,没有办法在Bootstrap中使用EmbeddedChannel。这就是说,我不确定我是否理解为什么你需要做很多改变。也许另一种更适合你的选择是使用LocalChannel和LocalServerChannel?两者都可以与*Bootstrap一起使用。
https://stackoverflow.com/questions/60397507
复制相似问题