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

时间:2012-12-16 13:42:31

标签: java java-ee

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

开发此产品的最佳方法是什么? 我考虑了一些选择:

  • 套接字:我读过很多帖子,你不应该在Web应用程序上使用套接字。
  • 肥皂:我可以在Web应用程序上设置服务器,但不在桌面应用程序上。
  • JCA适配器:我对此一无所知。

Web应用程序

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

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

DesktopApp

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

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

1 个答案:

答案 0 :(得分:0)

你对套接字是正确的,它们很容易使用,但是许多网络阻塞简单的TCP套接字并且只允许HTTP,有时只允许通过HTTP代理。

HTTP是可行的方式,但HTTP不允许服务器发起对话,它会强制您在请求响应模型中工作。

但是,有一些方法可以用来克服这个限制:

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

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

  • websockets:html5的一个功能,顾名思义,它提供了一个真正的双向套接字。所有网络设置都不支持这一点。例如,某些代理会阻止它。

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

祝你好运。