Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要运行RMI注册表的帮助吗_Java_Rmi - Fatal编程技术网

Java 需要运行RMI注册表的帮助吗

Java 需要运行RMI注册表的帮助吗,java,rmi,Java,Rmi,我正在用JAVA实现一个简单的RMI服务器客户端程序。事实上,我是个新手。我有四个java文件 Stack.java import java.rmi.*; public interface Stack extends Remote{ public void push(int p) throws RemoteException; public int pop() throws RemoteException; } import java.rmi.*; import java.rmi.serv

我正在用JAVA实现一个简单的RMI服务器客户端程序。事实上,我是个新手。我有四个java文件

Stack.java

import java.rmi.*;

public interface Stack extends Remote{

public void push(int p) throws RemoteException;
public int pop() throws RemoteException;
}
import java.rmi.*;
import java.rmi.server.*;

public class StackImp extends UnicastRemoteObject implements Stack{

private int tos, data[], size;

public StackImp()throws RemoteException{
    super();
}
public StackImp(int s)throws RemoteException{
    super();
    size = s;
    data = new int[size];
    tos=-1;     
}
public void push(int p)throws RemoteException{

    tos++;
    data[tos]=p;
}
public int pop()throws RemoteException{
    int temp = data[tos];
    tos--;
    return temp;
}

}
import java.rmi.*;
import java.io.*;


public class RMIServer{

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

    StackImp s = new StackImp(10);
    Naming.rebind("rmi://localhost:2000/xyz", s);
    System.out.println("RMI Server ready....");
    System.out.println("Waiting for Request...");   

}
}
import java.rmi.*;

public class RMIClient{

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

    Stack s = (Stack)Naming.lookup("rmi://localhost:2000/xyz"); 
    s.push(25);
    System.out.println("Push: "+s.push());

}
}
StackImp.java

import java.rmi.*;

public interface Stack extends Remote{

public void push(int p) throws RemoteException;
public int pop() throws RemoteException;
}
import java.rmi.*;
import java.rmi.server.*;

public class StackImp extends UnicastRemoteObject implements Stack{

private int tos, data[], size;

public StackImp()throws RemoteException{
    super();
}
public StackImp(int s)throws RemoteException{
    super();
    size = s;
    data = new int[size];
    tos=-1;     
}
public void push(int p)throws RemoteException{

    tos++;
    data[tos]=p;
}
public int pop()throws RemoteException{
    int temp = data[tos];
    tos--;
    return temp;
}

}
import java.rmi.*;
import java.io.*;


public class RMIServer{

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

    StackImp s = new StackImp(10);
    Naming.rebind("rmi://localhost:2000/xyz", s);
    System.out.println("RMI Server ready....");
    System.out.println("Waiting for Request...");   

}
}
import java.rmi.*;

public class RMIClient{

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

    Stack s = (Stack)Naming.lookup("rmi://localhost:2000/xyz"); 
    s.push(25);
    System.out.println("Push: "+s.push());

}
}
RMIServer.java

import java.rmi.*;

public interface Stack extends Remote{

public void push(int p) throws RemoteException;
public int pop() throws RemoteException;
}
import java.rmi.*;
import java.rmi.server.*;

public class StackImp extends UnicastRemoteObject implements Stack{

private int tos, data[], size;

public StackImp()throws RemoteException{
    super();
}
public StackImp(int s)throws RemoteException{
    super();
    size = s;
    data = new int[size];
    tos=-1;     
}
public void push(int p)throws RemoteException{

    tos++;
    data[tos]=p;
}
public int pop()throws RemoteException{
    int temp = data[tos];
    tos--;
    return temp;
}

}
import java.rmi.*;
import java.io.*;


public class RMIServer{

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

    StackImp s = new StackImp(10);
    Naming.rebind("rmi://localhost:2000/xyz", s);
    System.out.println("RMI Server ready....");
    System.out.println("Waiting for Request...");   

}
}
import java.rmi.*;

public class RMIClient{

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

    Stack s = (Stack)Naming.lookup("rmi://localhost:2000/xyz"); 
    s.push(25);
    System.out.println("Push: "+s.push());

}
}
RMIClient.java

import java.rmi.*;

public interface Stack extends Remote{

public void push(int p) throws RemoteException;
public int pop() throws RemoteException;
}
import java.rmi.*;
import java.rmi.server.*;

public class StackImp extends UnicastRemoteObject implements Stack{

private int tos, data[], size;

public StackImp()throws RemoteException{
    super();
}
public StackImp(int s)throws RemoteException{
    super();
    size = s;
    data = new int[size];
    tos=-1;     
}
public void push(int p)throws RemoteException{

    tos++;
    data[tos]=p;
}
public int pop()throws RemoteException{
    int temp = data[tos];
    tos--;
    return temp;
}

}
import java.rmi.*;
import java.io.*;


public class RMIServer{

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

    StackImp s = new StackImp(10);
    Naming.rebind("rmi://localhost:2000/xyz", s);
    System.out.println("RMI Server ready....");
    System.out.println("Waiting for Request...");   

}
}
import java.rmi.*;

public class RMIClient{

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

    Stack s = (Stack)Naming.lookup("rmi://localhost:2000/xyz"); 
    s.push(25);
    System.out.println("Push: "+s.push());

}
}
我正在使用JDK1.5。我编译文件的顺序是,首先我编译Stack.java,然后我编译StackImp.java,然后我使用这个命令rmic StackImp这一切都是成功的。但是,当我尝试以这种方式运行注册表时,命令提示符花费的时间太长。什么也没发生。我在家里的电脑上做这些。而这台电脑不在网络上。请建议我如何成功地使用此程序

命令提示符花费的时间太长。什么也没发生

不应该发生任何事情-注册表正在运行,您现在可以从另一个命令提示符启动服务器

或者,如果您在此计算机上仅运行一个RMI服务器进程,则可以在与RMI服务器相同的进程中运行注册表:

import java.rmi.*;
import java.rmi.registry.*;
import java.io.*;


public class RMIServer{

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

    StackImp s = new StackImp(10);
    Registry reg = LocateRegistry.createRegistry(2000);
    reg.rebind("xyz", s);
    System.out.println("RMI Server ready....");
    System.out.println("Waiting for Request...");   

  }
}
这样,您不需要单独的
rmiregistry
命令,只需运行服务器(包括注册表),然后运行客户端(与服务器进程中运行的注册表对话)