繁体   English   中英

如何使用Java RMI连接到EC2实例?

[英]How to connect to EC2 instance using Java RMI?

我有一个在Amazon中运行的EC2实例。 它的公共IP是54.72.14.247,并且当前对所有流量开放。

该实例托管着一个Fibonacci服务器,该服务器会在请求时计算斐波那契序列的编号。

服务器代码很简单(少于30行),可以在下面的链接中看到:

在我的本地计算机上,我有一个Java客户端试图访问该服务器:

package fiboclient;

import fiboserver.IFibonacci;
import java.math.BigInteger;
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;

public class FibonacciClient {

    public static void main(String[] args) {

        System.setProperty("java.security.policy", "client.policy");
        if(args.length == 0 || !args[0].startsWith("rmi:")){
            System.err.println("Usage: java FibonacciClient rmi://host.domain.port/fibonacci number");
            return;
        }

        try{
            Object o = Naming.lookup(args[0]);
            IFibonacci calculator = (IFibonacci) o;

            for(int i = 1; i < args.length; i++){
                try{
                    BigInteger index = new BigInteger(args[i]);
                    BigInteger f = calculator.getFibonacci(index);

                    System.out.println("The " + args[i] + "th Fibonacci number is " + f);
                }catch(NumberFormatException e){
                    System.err.println(args[i] + " is not an integer.");
                }
            }
        }catch(RemoteException e){
            System.err.println("Remote object threw exception " + e);
        } catch (MalformedURLException e) {
            System.err.println(args[0] + " is not a valid RMI URL");
        } catch (NotBoundException e) {
            System.err.println("Could not find the requested remote object on the server");
        }
    }

}

客户端和服务器都有一个策略文件,分别称为server.policyclient.policy 它们都有以下代码:

grant{
    permission java.security.AllPermission;
};

本地运行:请记住策略文件在正确的位置,首先启动服务器,然后使用以下参数启动客户端: rmi://localhost:1099/fibonacci 0 1 2 3 4 5 55 155

一切都会顺利进行。

要求EC2实例服务器运行:首先,我在Ec2实例上启动了服务器。 现在,该服务器正在侦听并等待请求。

然后在我的本地计算机上,我使用参数rmi://54.72.14.247:1099/fibonacci 0 1 2 3 4 5 55 155运行客户端,然后没有任何响应。 从字面上看,什么也没发生,我也不知道为什么!

我想念什么吗? 我该如何解决这个问题?

JAR文件

为了方便起见,为了让大家都可以测试案例,我编写了JARS。 运行java -jar jarFileName.jar ,请使用java -jar jarFileName.jar命令,并确保策略文件与jar文件位于同一文件夹中

编辑

安全组截图: 在此处输入图片说明

您是否为入站流量打开了端口? 如果不遵循这些步骤 干杯

这里有更多关于亚马逊的内容

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM