我需要创建一个servlet来监听某个特定的端口(比如serverSocket.accept()),生成新的线程(比如普通的servlet)并将socket(或者只是输入流和输出流)传递给我的代码。 这个连接与http无关。我需要读取和写入二进制数据到打开的连接。
Tomcat可以吗?从哪里开始? 我已经搜索了GenericSocket示例,但我发现从GenericSocket继承的servlet仍然必须在web.xml中配置一些url-pattern - 但这是特定于http的。
答案 0 :(得分:4)
多年前,当servlet首次在Java中引入时,关于servlet编程的最好的书籍之一是Jason Hunter的Java Servlet Programming(由OReilly出版)。本书附带了可下载的源代码示例,其中包括所谓的DaemonHttpServlet类,您可以将其子类化,以完全按照您的要求进行操作。
请参阅此链接以获取源代码:http://java.codefetch.com/example/qg/src/com/oreilly/servlet/DaemonHttpServlet.java
还有一个servlet也充当RMI服务器。
我可以看到为什么会有人看到以这种方式使用servlet的效用;如果您的主应用程序是基于HTTP的Web应用程序,但您的应用程序的一些较小部分要求您通过原始套接字公开RMI接口或某些自定义接口,那么将它们实现为servlet将使您更容易干净地部署您的应用程序单个.war或.ear文件。
希望有所帮助。
更新:一些快速的谷歌搜索显示以下内容:
因此,对于HTML5 WebSockets,似乎使用Servlet进行非http(s)原始套接字工作似乎并不是一个非标准的用例。
答案 1 :(得分:1)
你可以做到这一切,只需编写代码,但为什么需要servlet部分?还是Tomcat?
答案 2 :(得分:0)
绝对查看servlet for implementing socket connection。你要做的是非标准的。
答案 3 :(得分:0)
我想使用一些servlet容器(比如Tomcat),因为我也会使用WebServices(作为客户端和服务器)。