在 Apache PLC4X 项目中,我目前正在建立一个集成测试框架。PLC4X 的 Java 驱动程序大量使用 Netty。我们还构建了一大组所谓的“传输”,它们提供了 Netty 用于通信的 Channels。其中一种传输是使用 EmbeddedChannel 的“TestTransport”。我正在努力使这种传输在 Netty 的引导机制中工作。我尝试什么都没关系,我被卡住了。如果我不提供 EventLoop,Bootstrap 会抱怨没有 EventLoop。如果我通过覆盖“init”方法从 EmbeddedChannel 获取 EventLoop,EmbeddedChannel 会抱怨已经配置了 EventLoop。
不幸的是,在 Netty 的核心中,我需要调整的一切都是“私有的”、“包私有的”和“最终的”。随着 Java 的更新版本,许多邪恶的反射东西不再可能。
有没有办法使用 Bootstrap 机制配置 EmbeddedChannel,因为我不想拆开项目的核心并切换到 ChannelFactories 只是为了这个功能......而且我不想分叉很多Netty 代码只是为了完成工作。