【问题标题】:how to send data from one java program to another如何将数据从一个java程序发送到另一个
【发布时间】:2011-07-19 22:17:02
【问题描述】:

我们有一个用例:

  1. 从另一个 java 程序启动一个 java 程序。
  2. 调用第二个 java 程序后,将数据流从第一个 java 程序发送到第二个。

我检查了我们可以使用套接字/rpc。我还看到 RMI/web-services 可用,但现在对所有东西都感到困惑。

有人可以指点我一些关于如何做到这一点的好文档吗?

提前致谢

【问题讨论】:

  • 你能再描述一下吗?通过 servlet 的 Web 内容是一种这样的模式,文件中的持久存储是另一种模式,某些协议下的套接字数据流可能是另一种模式......
  • @Randy - 我们有来自我们的 ETL 框架的数据,我们以平面文件的形式获得,我们必须将其流式传输到我们的第一个 java 程序,然后将其发送到第二个 java 程序,最后处理它。
  • 您也可以将第一个程序的数据输出到第二个程序的输入,就像在*nix中连接命令工具时通常所做的那样。
  • 我忘了说这两个 java 程序运行在两个不同的机器上。第一个在 AIX 上,第二个 java 程序在另一个 linux 机器上。所以,管道不起作用。

标签: java web-services sockets rmi rpc


【解决方案1】:

我自己没有来使用它,但我认为Terracotta(更准确地说是distributed cache)可以满足您的需求(并提供更多)。

引用Clojure + Terracotta = Yeah, Baby!(重点是我的)

Terracotta 提供了一个网络附加的、虚拟的、持久的堆和透明的 JVM 间线程协调。使用 Terracotta,您不再需要将对象映射到数据库表并返回。您只需将对象交给 Terracotta,它就会缓存您的数据。它不仅会缓存您的数据,还会使您的对象可用于网络 JVM 集群

【讨论】:

    【解决方案2】:

    RMI 将是您最简单的选择(2 个 java 程序在同一个机器上运行)。通过 rmi 流式传输数据并不简单,但是我编写了 RMIIO 库,这使得这变得相当容易。

    【讨论】:

    • 我忘了说这两个 java 程序运行在两个不同的机器上。第一个在 AIX 上,第二个 java 程序在另一个 linux 机器上。所以,管道不起作用。
    • 没关系,我所说的没有任何改变。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2014-08-24
    • 2014-11-01
    相关资源
    最近更新 更多