是否可以为 Tomcat 容器编写非 HTTP servlet?

Is it possible to write a non-HTTP servlet for Tomcat container?

我想处理非 HTTP 流量,但(现在看来)我必须 运行 在 Cloud Foundry 生态系统中处理它。

有没有什么方法可以编写(和推送)可以处理原始 TCP 连接的 servlet,或者这是否违反整个 servlet 容器设计(正如我现在所看到的)?

Servlet 处理请求(根据规范不一定是 HTTP 请求,但总是请求)。您可以编写监听原始 TCP 套接字的代码,但这与它是否在 Tomcat 中的 运行 无关。

Tomcat 侦听 HTTP 端口,并将发送给它的请求转换为传递给 servlet 方法的 Java 对象。

您不能让 Tomcat 收听除 HTTP 或 HTTPS 之外的任何内容。因此,如果您有一个处理原始 TCP 连接的 class,它将不会利用处于 Tomcat.

中的优势。

截至目前,Cloud Foundry 不支持 TCP。然而,TCP今年就要来了。查看 http://www.slideshare.net/Pivotal/cloud-foundry-summit-2014-cloud-foundry-roadmap 路线图!

要添加更多关于您的原始问题的更多信息,即是否可以为 Tomcat 容器编写非 HTTP servlet,答案是肯定的,这很有可能。 TomCat 预配置了对 HTTP 协议的内置支持;但是,您可以扩展 servlet 概念并对其进行调整以支持 TCP/IP 之上的其他协议,这个想法并不太牵强。

如果您查看您的 servlet class,您会看到此 class 扩展了 HttpServlet,并且 HttpServlet 扩展了 GenericServlet class。您可以创建自己的扩展 GenericServlet 的独特协议 class。例如,您可以创建 FTPServletSMTPServlet class。但是,您需要调查 servlet 范例是否是实现其他协议的最佳体系结构。祝你好运。