首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rmi - ConnectException

rmi - ConnectException
EN

Stack Overflow用户
提问于 2013-01-10 11:35:18
回答 1查看 931关注 0票数 0

这是我第一次使用RMI,基本上我设法在我的PC上本地运行以下RMI示例,而不是通过两台独立的Linux计算机。

服务器接口:

代码语言:javascript
复制
public interface PowerService extends Remote{
public BigInteger square ( int number )
    throws RemoteException;

public BigInteger power  ( int num1, int num2) 
    throws RemoteException;
}

服务器:

代码语言:javascript
复制
public class PowerServiceServer extends UnicastRemoteObject implements
    PowerService {

public PowerServiceServer() throws RemoteException {
    super();
}

public BigInteger square(int number) throws RemoteException {
    imp .....
    return (bi);
}

public BigInteger power(int num1, int num2) throws RemoteException {
    imp .....
    return bi;
}

public static void main(String[] args) throws Exception {

    PowerServiceServer svr = new PowerServiceServer();
    // ... and bind it with the RMI Registry
    Naming.bind("PowerService", svr);
    System.out.println("Service bound....");
}
}

客户端:

代码语言:javascript
复制
public class PowerServiceClient {
public static void main(String args[]) throws Exception {
    // Call registry for PowerService
    PowerService service = (PowerService) Naming.lookup("rmi://" + args[0]
            + "/PowerService");
    DataInputStream din = new DataInputStream(System.in);
    for (;;) {
        System.out.println("1 - Calculate square");
        System.out.println("2 - Calculate power");
        System.out.println("3 - Exit");
        System.out.println();
        System.out.print("Choice : ");

        String line = din.readLine();
        Integer choice = new Integer(line);

        int value = choice.intValue();

        switch (value) {
        case 1:
            // Call remote method
            ....................
            break;
        case 2:
            // Call remote method
            ....................
            break;
        case 3:
            System.exit(0);
        default:
            System.out.println("Invalid option");
            break;
        }
    }
}

客户端接口与服务器端相同。

为了运行rmi示例,我执行了以下操作:

1)在服务器端,我创建了存根

2)运行rmiregisrty

3)运行服务器

4)将存根从服务器端复制到客户端,并将其复制到相同的包中

5)运行客户端

运行客户端后,我收到以下错误消息:

主线程java.rmi.ConnectException异常:主机连接被拒绝: 127.0.0.1;嵌套异常为:在sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)的sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)、sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)的sun.rmi.server.UnicastRef.invoke(UnicastRef.java:110)、compute.PowerServiceServer_Stub.square(Unknown的java.net.ConnectException中,连接被拒绝)

有没有可能是因为某些防火墙我无法连接,或者我做错了什么??

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-11 04:28:25

这是java.rmi.server.hostname.解决的问题,请参阅RMI中的A.1项。在导出任何远程对象之前,您需要修复导致它的/etc/hosts错误配置,或者将服务器JVM中的系统属性java.rmi.server.hostname设置为服务器的正确IP地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14250432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档