与 OpenShift 上的 Java 程序的 RMI 或套接字连接
Posted
技术标签:
【中文标题】与 OpenShift 上的 Java 程序的 RMI 或套接字连接【英文标题】:RMI or socket connection to Java Program on OpenShift 【发布时间】:2014-05-14 15:22:08 【问题描述】:我有以下简单的场景:
我在 OpenShift 上创建了一个 JBossAS7 应用程序。我有一个 index.jsp,每次加载它时都会调用一个 Java 类。这个 Java 类收集一些数据并将其保存为字符串。我现在要做的是获取该字符串中包含的文本,但不会将其显示在页面上。
我需要的是一种机制,如 RMI 或我可以连接并使用客户端程序简单地接收字符串的套接字。不幸的是,OpenShift 阻塞了所有端口,我不能使用 RMI 或套接字绑定到任何东西(我总是被拒绝权限)。
有没有办法解决这个问题? 谢谢!
【问题讨论】:
【参考方案1】:我会说您公开该数据的最佳方式是通过 servlet,或者创建一个 RESTful API 并允许访问它,可能使用一些身份验证或安全令牌。
另一个想法是使用 ironmq (iron.io) 并将数据发送到一个队列中,您可以从另一个应用程序处理该队列。
【讨论】:
【参考方案2】:我解决这个问题的方法相当简单,但在论坛或留言板上没有得到很好的解释和记录。
OpenShift 仅允许用户绑定 15000 到 35530 之间的端口。但是,这样做时用户还必须指定主机的 IP 地址,否则将使用 localhost
,这在 OpenShift 上是不允许的。服务器的地址位于环境变量OPENSHIFT_JBOSSAS_IP
下(我使用的是JBoss AS 7.1,根据使用的任何技术,该变量可能具有不同的名称)。我通过 SSH 登录我的应用程序并运行 env
命令发现了这一点。
一旦程序在 OpenShift 上启动并且端口绑定到正确的 IP 地址,用户必须转发端口才能连接到它。这可以通过 eclipse 或使用 RHC 工具来完成。 OpenShift 上的端口转发意味着 OpenShift 服务器上的绑定端口将映射到用户本地主机上的相同端口。在编写客户端程序时,用户必须连接到localhost:PORT
而不是IP_ADDRESS_OF_OPENSHIFT_SERVER:PORT
。这是我花了一段时间才理解的事情。一切就绪后,客户端程序就可以正常运行了。
【讨论】:
以上是关于与 OpenShift 上的 Java 程序的 RMI 或套接字连接的主要内容,如果未能解决你的问题,请参考以下文章
使用 OpenShift Origin 上的 URL 启动应用程序