gpt4 book ai didi

Java EE、通信 Web 应用程序和桌面应用程序

转载 作者:行者123 更新时间:2023-12-02 02:49:34 25 4
gpt4 key购买 nike

我有 Java Server Faces Web 应用程序,它需要调用网络计算机上的桌面应用程序中的方法。这台机器将在特定机器上执行一些逻辑。完成后,它应该调用 Web 应用程序上的方法来报告其状态。这两种方法都是void,但都需要参数。

开发此功能的最佳方法是什么?我考虑过一些选择:

  • 套接字:我读过多篇文章,指出不应在 Web 应用程序上使用套接字。
  • Soap:我可以在网络应用程序上设置服务器,但不能在桌面应用程序上设置服务器。
  • JCA 适配器:我对此一无所知。

网络应用

    class WebAppClient {
public void start(String x, List<String> y) {
// Call DesktopServer.start(x, y);
}
}

interface WebAppServer {
public void reportBack(String info);
}

桌面应用

    class DesktopClient
public void reportBack(String info) {
// Call WebAppServer.reportBack(info);
}
}

interface DesktopServer {
public void start(String x, List<String> y);
}

最佳答案

关于套接字,您是对的,它们使用起来很简单,但许多网络阻止简单的 TCP 套接字,只允许 HTTP,有时只允许通过 HTTP 代理。

HTTP 是可行的方法,但 HTTP 不允许服务器发起 session ,它迫使您在请求响应模型中工作。

但是,可以使用一些方法来克服此限制:

  • 简单轮询:您只需定期轮询服务器即可了解是否收到新消息。

  • 长轮询:您轮询服务器,但请求保持打开状态,直到服务器有话要说,这也称为“comet”协议(protocol),并且有像 jetty 这样的实现。

  • websockets:html5 的一项功能,顾名思义,通过 http 提供真正的双向套接字。所有网络设置尚不支持此功能。例如,某些代理会阻止它。

您应该对每种方法进行一些研究,并选择适合您的情况的方法。

祝你好运。

关于Java EE、通信 Web 应用程序和桌面应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13901863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com