如何在 Tomcat 中为 Java EE 应用程序实现套接字

Posted

技术标签:

【中文标题】如何在 Tomcat 中为 Java EE 应用程序实现套接字【英文标题】:How to implement a socket for a Java EE application in Tomcat 【发布时间】:2015-12-29 11:41:36 【问题描述】:

我有一个用于数据分析的 Python 应用程序和一个用于 Web 监控的 Java EE 应用程序。现在我需要在它们之间建立持久的通信,以便将分析结果从python传输到java。

由于两个应用程序都位于同一台服务器上,我想实现一个 TCP 套接字。至于数据量,每秒大约有 10 个传感器的数据传输。我正在使用 Tomcat 8.0 for Java EE 和一个简单的 python 脚本。所以我的问题是:

套接字实现是个好主意吗? 如果是,如何实现,谁能给我一个教程或例子? 如果不行,接下来我该怎么办?

其他信息

在***How to serve a socket from a Java EE application上看到了一个相关的问题,有一些命题:

实施连接器 (JCA)。但我认为目标运行时是 JBoss 而不是 Tomcat。 实现 Java 命名和目录接口 (JNDI)。这就是我正在尝试的,你可以看到我之前的问题Why JNDI resource can only be called once in Tomcat? 人们使用 JNDI 来使用资源,例如数据库连接。所以我不确定这是否是实时通信的好方法。而且我在学习过程中遇到了很多麻烦。 我想到了网络套接字。但这是否意味着我也需要一个 python 服务器?

【问题讨论】:

没有 Python 会是客户端,所以你需要某种 python websocket 客户端模块。但您更有可能希望通过使用 socket.io 的 javascript 来使浏览器成为客户端。 【参考方案1】:

我相信有一百种方法可以在这些技术之间共享数据。但是对于 Java,您应该保持简单。在 Tomcat 中你不需要编写套接字实现,你只需要一个基本的Servlet 实现。所以基本上是为了你的问题。

套接字实现是个好主意吗?

很快就没有了。

如果是,如何实现它,有人可以给我一个教程或 例子?

已经回答否了。

如果没有,接下来我该怎么办?

编写一个监听服务器 url 地址的基本 servlet 应用程序。您的 phyton 脚本只是一个客户端。在 phyton 站点中,您只需向 servlet url 发送一个 POST 请求,然后在 Java 端获取请求,读取您的数据并处理它。你可以从Mkyong开始学习Servlet。

【讨论】:

这真是一个很棒的解决方案!

以上是关于如何在 Tomcat 中为 Java EE 应用程序实现套接字的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Jax-RS(Jersey) 在 Tomcat7 上运行应用程序 Hibernate 5.x、Jpa 2.1、Java EE7(javaee-api 7.0)

选择嵌入式 EJB 3.x 容器在 Tomcat 上运行 Java EE 5 应用程序

tomcat配置与应用

如何配置Java EE Eclipse+Tomcat开发环境,并导入项目

solr 数据导入处理程序 jndi websphere

Java EE、JDBC 和 Tomcat