java - RMI 或 Servlets 通过防火墙向/从 applet 发送对象?

标签 java tomcat servlets rmi firewall

我有一个大约有 8 年历史的系统,其中 java 小程序使用套接字通过端口与自定义服务器(用 java 编写)通信。任何时候,用户都不超过十几个。我们越来越多的用户处于他们无法控制的防火墙后面。建议的解决方案是找到一种通过端口 80 发送对象的方法。

我倾向于 servlet。主要缺点是学习如何将所有东西放在一起(apache、tomcat、servlet)需要时间。

然而,RMI 似乎(从表面上看)更简单,但阅读 Oracle 关于防火墙的常见问题解答让我认为它可能并不总是有效。此外,我还没有看到有关在共享端口时它如何与 apache 一起工作的好指南。

鉴于限制:(1) 必须为客户端使用 java applet,(2) 无法控制客户端的防火墙,(3) 我是一个不错的业余程序员,但不是专业的,而且没有资金可以雇用专业人士,哪条路更好,或者错过了另一个解决方案?

最佳答案

鉴于目前所有这些都在 RMI 上运行,我倾向于 tunnelling RMI over HTTP .我从来没有这样做过,但它是 RMI 的一个古老功能,应该可以稳健地工作。

您谈到与 Apache 共享一个端口。你实际上不能这样做——只有一个进程可以在任何给定端口上监听。但是,您可以做的是将 Apache 放在端口 80 上,并将其配置为将请求转发到 RMI,RMI 可以在其他端口上监听。您可以这样做,因为(如果我没看错的话!)融入 RMI-over-HTTP 方法的核心是路径 /cgi-bin/java-rmi.cgi。你可以使用 Apache 著名的 mod_rewrite捕获对该路径的请求并将它们传递到其端口上的 Java 进程。您甚至可以将 RMI 进程放在完全不同的主机上,并通过网络向它传递请求。

关于java - RMI 或 Servlets 通过防火墙向/从 applet 发送对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7861825/

相关文章:

java - web.xml 和/或过滤器以返回欢迎文件

java - android:点击按钮时显示html页面?

apache - gerrit http认证

javascript - 如何使用 AJAX 将变量值发送到 java servlet? (没有 jQuery)

android - spring MVC中下载多张图片的Web服务

java - 显示消息和后退按钮的 session

java - 为什么我的 cookie 值没有设置?

java - Android Java JNI 和 C Char 数组无法识别值

java - 在 Eclipse RCP 中默认激活强制链接编辑器

java - 重用 Java 方法的最佳方式