我有一个大约8年的系统,其中java applet使用套接字通过端口与自定义服务器(用java编写)进行通信。在任何时候,用户不超过十几个。越来越多的用户落后于他们无法控制的防火墙。建议的解决方案是找到一种通过端口80发送对象的方法。
我倾向于servlet。主要的缺点是学习如何把所有东西放在一起的时间(apache,tomcat,servlets)。
然而,RMI似乎(从表面上看)更简单,但阅读Oracle有关防火墙的常见问题解答让我觉得它可能并不总是有效。此外,我还没有看到一个很好的指南,说明它们在共享端口时如何使用apache。
考虑到这些限制:(1)必须为客户使用java applet,(2)无法控制客户的防火墙,(3)我是一个体面的业余程序员,但不是专业人士,没有资金可以雇用专业人士,这是更好的路线,还是错过了另一种解决方案?
答案 0 :(得分:2)
鉴于目前所有这些都适用于RMI,我倾向于tunnelling RMI over HTTP。我从来没有这样做,但它是RMI的一个古老特征,应该可以有效地工作。
您谈到与Apache共享端口。你实际上不能这样做 - 只有一个进程可以监听任何给定的端口。但是,您可以做的是将Apache置于端口80上,并将其配置为将请求转发给RMI,RMI可以侦听其他端口。你可以这样做,因为(如果我正确地阅读!)烘焙到RMI-over-HTTP方法的内容是路径/cgi-bin/java-rmi.cgi
。您可以使用Apache着名的mod_rewrite来捕获对该路径的请求,并将其传递给其端口上的Java进程。您甚至可以将RMI进程放在完全不同的主机上,并通过网络将请求传递给它。