当前位置: 首页 > 知识库问答 >
问题:

RMI客户端解组异常

慕佑运
2023-03-14

我的项目是客户端/服务器,客户端发送一个对象到服务器,服务器响应,所有这些都是通过RMI

客户项目

//接口

public interface RMI_INTERFACE extends Remote
{

public int Add(Employee e) throws RemoteException;
}

//我需要把它发给的班级

public class Employee implements Serializable
{
int ID;

String Name;

int Salary;

public Employee(int id,String name,int salary) 
{
    ID=id;

    Name =name;

    Salary=salary;
}


}

//客户端

public class RMI_CLIENT 
{

public RMI_CLIENT() 
{

}

public static void main(String[] args) {    
    try {


         String name = "RMI_INTERFACE";
        Registry registry = LocateRegistry.getRegistry("localhost",5000);
        RMI_INTERFACE si = (RMI_INTERFACE) registry.lookup(name);

        int ii;

        for (Integer i=0 ;i<10;i++)
        {
            Employee e= new Employee(i,  "employee"+i.toString() , i*1000+100);

            ii=si.Add(e);
            System.out.println(ii);

        }

       // int pi = si.Get_Salary(s);


    } catch (Exception e) {
        System.err.println(e.getCause());
    }
}
}

//服务器项目

//接口公共接口RMI_接口扩展了远程{

public int Add(Employee e) throws RemoteException;
}

//类,我将发送和接收它公共类Employee实现可序列化的{int ID;

String Name;

int Salary;

public Employee(int id,String name,int salary) 
{
    ID=id;

    Name =name;

    Salary=salary;
}


}

//类来保存所有接收到的对象公共类Maneger{

static Employee [] employee_arr = new Employee[10];

static int i=0;

Maneger (Employee e)
{
    employee_arr[i]=e;

    i++;

}

public int Get_Index ()
{
    return i;
}
}

//服务器公共类RMI_server扩展了UnicastRemoteObject,实现了RMI_接口{

RMI_SERVER() throws RemoteException 
{
      super();
}

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    try {
        // TODO code application logic here         

        String name = "RMI_INTERFACE";
        RMI_INTERFACE si = new RMI_SERVER();        
        Registry registry = LocateRegistry.createRegistry( 5000 );
         registry.rebind(name, new RMI_SERVER() );
        System.out.println("Server is running ...");




    } 
    catch (Exception e) {
        System.err.println("ComputeEngine exception:");
    }



}

@Override
public int Add(Employee e) throws RemoteException {

    Maneger m =new Maneger(e);

    return m.Get_Index();

}


}

当我运行客户端时,会出现以下错误:java。马绍尔群岛共和国。UnmarshaleException:无法识别的方法哈希:远程对象不支持的方法

共有1个答案

滕英奕
2023-03-14

您已经更改了远程对象或远程接口,但尚未重新编译和重新部署所有受影响的对象。类文件。

 类似资料:
  • 我正在尝试使用RMI客户机-服务器通信。我编写了以下类/接口: > 接口远程接口扩展远程 类HelloStub扩展UnicastRemoteObject实现远程接口 类服务器,我绑定了远程obj 将客户端分类如下: 我不明白为什么我必须使用interface RemoteInterface进行查找?我不能使用HelloSub类吗,它是真正的远程obj? 谢谢,再见。

  • 问题内容: RMI是否自己处理多个客户端?即 是否可以同时使用多个客户端的服务器功能? 如果没有,我该怎么做? 如果是,它如何工作?每次 调用 都会创建一个新线程吗?如果一个客户端阻止了该功能,那么下一个客户端会发生什么?等等 问题答案: 是 这个怎么运作?每次调用都会创建一个新线程吗?如果一个客户端阻止了该功能,那么下一个客户端会发生什么?等等 它为每个客户端连接创建一个线程。 如果一个客户端调

  • 我正在做一个正在改造/现代化的项目,其中有一个小的RMI部分,不幸的是,我以前从未与RMI合作过。 我不明白的一件事是,为什么在我最初创建RMI客户端之后,它一直调用其自定义SocketFactory构造函数。似乎每5分钟我就会看到一次调用构造函数的输出,即使客户端和服务器之间没有通信。 连接完成后,我应该做什么来清理和停止任何线程以进行持久化? 我在检查UnicastRemoteObject,也

  • 我在客户端wnat纯java RMI,因为我需要能够重新启动服务器端。

  • 我正在尝试连接到MBean服务器。我需要编写JMX客户端应用程序。这是用于客户端应用程序的代码。但我有一个例外 检索RMIServer存根失败:javax.naming.ServiceUnavailableException[根异常为java.rmi.ConnectException:连接拒绝主机:localhost;嵌套异常为: 谁能帮我把这个修好。 我使用以下参数运行了这段代码。 dcom.s

  • 我已经为rmi编程了一段时间,一个月后,我仍然被困在一个棘手的问题上。我想从服务器向客户端发送一个序列化对象,我想让客户端从服务器代码库下载这个对象的类。如果客户端的类路径中没有对象的类,我就无法让它工作。以下是我一直在做的: 我有一个要求一个到一个。也应该下载类ClientPlayer并动态加载它。 这是身份验证服务器,它应该创建一个对象(或),并将其返回给。(为了简洁起见,我省略了接口;无论如