【问题标题】:J2EE to Java standalone applications communication [closed]J2EE 到 Java 独立应用程序的通信 [关闭]
【发布时间】:2014-11-10 20:11:02
【问题描述】:

让两个应用程序在同一主机上(一个 J2EE 和另一个 Java 独立应用程序)相互通信的最佳做法是什么?

更多信息:

  • j2ee 应用程序将在 Wildfly AS 中部署
  • Java 独立是 Netty NIO 服务器

编辑一个 更多信息:

  • Netty 服务器是一个纸牌游戏服务器,它将保存游戏本身的业务逻辑,并允许玩家彼此同步玩(每场游戏最多四个玩家,我的硬件允许的最大游戏数量服务器资源)
  • J2ee 应用程序(在 Wildly 中部署)将负责身份验证和授权
  • J2ee 应用程序将负责数据库连接和持久性
  • J2ee 应用程序必须将经过身份验证的播放器的远程套接字地址以及最终保存该播放器状态的对象转发给 java 独立服务器
  • J2ee 应用程序可能会触发通信,尽管对于我当前的流程,我需要来自两端的全双工通信(因此我担心 WS 或 Rest,这不是有点不对称吗?全双工通信通道?)
  • Netty 服务器可能被视为 AS 的后台任务,它将启动它(以及最终启动其他纸牌游戏服务器)以尝试伪水平可扩展性

【问题讨论】:

  • 以您最熟悉和最舒适的方式进行操作。应用程序的 J2EE 特性不会影响它与其他应用程序的通信方式。

标签: java jakarta-ee rmi wildfly-8


【解决方案1】:

让一个打开一个套接字并与另一个通信。

你可以做更多奇特的事情,但如果环境发生任何变化,它就会崩溃。对于“异国情调”的一些想法

  1. 从命名管道写入和读取
  2. 设置一个或两个共享内存缓冲区。 等等……

【讨论】:

  • 只想补充一点,socket通信不依赖Java或jee。您可以将 Java 与任何支持网络的应用程序进行通信和集成,最好的方法不是重新发明轮子,而是使用 http(也称为 rest)或 Web 服务,而不是一些自己的专有套接字协议。
  • 虽然我倾向于同意,但 HTTP 通常涉及的不仅仅是简单的套接字通信。在很多情况下,如果您想要无状态处理,这是正确的选择;但是,如果您想要有状态处理,则需要在无状态协议之上分层的东西数量是惊人的。
  • 是的,没错,沟通总是取决于上下文。这里有很好的演讲oredev.org/2010/sessions/…
  • @Edwin Buck ,我已经相应地编辑了我的问题
【解决方案2】:

我认为当您对以下相关问题不清楚/不明确时,不可能给出一个好的实现模式:

  1. 独立应用程序是否为后台任务(可能已启动 与容器)?
  2. 如果是,J2EE 和独立设备是否都必须 共享会话或对话数据?
  3. 谁触发了通信 什么时候交流?
  4. 两个应用程序是否可能共享同一个后端数据库?

【讨论】:

  • 我已经相应地编辑了我的问题
  • 不知道 Netty NIO 我不确定是否相关/适用:考虑通过数据存储进行持久通信怎么样?
  • 您的意思是(在这种情况下)让两个应用程序共享同一个数据库?我担心的是,Netty 是 NIO(非阻塞输入输出)服务器,而数据库访问通常是阻塞的,如果事务通过 IO 方法关联/调用,将导致性能损失,因此 Netty 将中继 JBoss 以实现持久性。这只是我的恐惧,到目前为止我没有任何证据可以证明这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多