我想知道是否有一种方法可以使Java桌面应用程序与applet通信,以便从桌面应用程序(通过applet)调用Javascript函数。
上下文
一方面,我有一个ExtJS应用程序(全ajax),它位于远程服务器上。另一方面,桌面Java应用程序(netbeans应用程序),它是驻留的(确实)。
我会怎么做:
每当其中一个应用程序被使用时,它都会发送事件&数据传输到其他应用。
经过一番研究,我在这里和这里看到了一些有趣的帖子,还有一个关于如何在applet之间进行通信的答案(也见这里)。
问题不在于如何跨域从applet到桌面应用程序(见这里和那里),而是如开头所说,如何从桌面java应用程序到javascript进行通信。
指出webapp (ExtJS)是基于远程服务器的,applet也是。我可以在本地找到applet,但这意味着要部署本地web服务器。
桌面应用程序非常笨重,所以我无法将其转换为applet格式。
我放了"reverse-AJAX"标签,因为这是我要做的全局概念。
如果不使用applet (请不要使用Flash )也可以。
为了在浏览器中从Java applet调用javascript方法,您需要使用Netscape LiveConnect API,这里有一些示例。
基本上,这是一个由浏览器本地实现的API,允许java applet访问浏览器的javascript引擎。
一旦你排序好了,你需要从桌面应用程序调用applet中的方法,这有点棘手。最简单的方法可能是使用Enum
交换序列化实例来描述事件的类型。
这里有一个使用套接字进行通信的例子