GWT与外部独立应用程序的交互

时间:2011-06-01 19:11:30

标签: java gwt ipc

我在一个独立的Java应用程序上工作,这是一个针对各种硬件的命令和控制系统。 C& C软件基本上从命令行运行,并控制遍布各地的系统硬件。它不需要GUI来满足业务需求。我已经编写了一个小型的swing GUI,这样我就可以看到系统的总体状态,但这又不是必需的。

展望未来,我们希望拥有一个具有系统状态的管理Web GUI,以及一些可以让用户对硬件进行一定程度控制的东西。我们认为GWT可能是一个可行的解决方案。我们的GWT应用程序必须使用C& C软件进行某种IPC。我不知道这是多么可行,我不知道我们希望将C& C软件捆绑为必须在应用服务器下运行的Web应用程序。

我对此没有多少经验。我以为GWT客户端将通过RPC与GWT服务器进行交互,而GWT服务器将具有某种与C& C的RPC(RMI ???)。

4 个答案:

答案 0 :(得分:1)

您拥有的另一个选项是运行可以与GWT(使用JSNI)和操作系统进行交互的Java Applet。一个简单的例子是在用户的主文件夹中打开一个公共文件,并对该文件进行读/写(C& C应用程序也是如此)。

答案 1 :(得分:1)

您可以将嵌入式tomcat或Jetty嵌入到您的应用程序中,并让它运行一个简单的基于servlet / JSP或基于GWT的Web UI。实际上,当您从Eclipse调试/运行GWT应用程序时,它将在嵌入式Tomcat实例中启动。

答案 2 :(得分:1)

我使用Spring找到了解决方案。我们修改了许多Command and Control应用程序以使用Spring IoC,然后我们使用其他Spring库来扩展其功能。为了与GWT交互,我们公开了服务并使用httpInvokers从GWT服务器代码进行调用。

当然,这意味着我们需要将Spring与GWT应用程序一起使用,以便从GWT服务器代码进行http调用。但一切正常。

答案 3 :(得分:0)

您没有使用JavaScript(GWT所基于的)对客户端系统进行直接控制。在你的用例中甚至没有意义,为什么使用外部服务器来控制本地程序的网站?

如果你反过来(app服务器在与C& C软件相同的系统上运行,并且Web客户端可以从任何地方获得),那么这可能是不可能的,但这与GWT没什么关系。在服务器上,您可以编写普通的Java代码。 GWT只用于Web GUI和对服务器的RPC调用。 可以使用以下行(Windows示例)实现从应用服务器调用C& C软件:

Runtime.getRuntime().exec("C:\\PathTo\\Program.exe")

此函数返回类Process的实例,该实例提供Input-和OutputStream以模拟用户输入并读取和处理程序输出。

请注意,使用此方法会失去平台独立性,因为exec()的参数对于每个操作系统而言都不同。

修改 在重新阅读您的问题之后,将C& C软件直接集成到服务器代码中甚至更有意义,正如您对问题的评论所暗示的那样。你需要一个应用服务器来使用GWT-RPC,而不是一个网络服务器,但那就是毛发分裂。 有关GWT-RPC通常如何工作的信息,请访问:(tutorial)(detailed description)