假设您运行的 Servlet 容器没有SecurityManager
配置,您可以将 Netty 应用程序作为 Web 应用程序的一部分启动。
首先,编写一个ServletContextListener
在 Servlet 容器启动或停止 Web 应用程序时通知的实现。您可以在那里启动和停止您的 Netty 应用程序。您还应该更新web.xml
Servlet 容器来获取它。
要使 Netty 应用程序与您的 Web 应用程序交互(例如,通过 Netty 应用程序向遗留系统发送消息),您必须将您的 Netty 应用程序公开给您的 Web 应用程序。这通常通过单例来完成。
因为 Netty 中的每个操作都是异步的,所以您可能会在 Web 应用程序和 Netty 应用程序之间遇到一些“阻抗不匹配”。通常,Web 应用程序会要求 Netty 应用程序向遗留系统发送请求,并等待 Netty 应用程序在收到来自遗留系统的响应时发出通知。
为了处理这种场景,通常可以使用这样的数据结构BlockingQueue
——发送请求后,Web 应用程序会一直等待,直到队列有元素,Netty 应用程序会将响应对象添加到队列中以通知 Web 应用程序。
如果您使用的是 Netty 4,您可能想看看这些io.netty.util.concurrent.Future/Promise
类对于这种情况也是非常有用的构造。