1

JSPでRMIを使用しようとしています。私のコードは次のとおりです。

Hello.jsp

<%@ page import="java.rmi.Remote" %>
<%@ page import="java.rmi.RemoteException" %>
<%!
public interface Hello extends Remote {
    String sayHello() throws RemoteException;
}
%>

Client.jsp

<%@ page import="java.rmi.registry.LocateRegistry" %>
<%@ page import="java.rmi.registry.Registry" %>
<%@ include file="Hello.jsp" %>
<%!
public static class Client {

    public static String get() {

        String host = "<server's ip>";
        String res = null;
        try {
            Registry registry = LocateRegistry.getRegistry(host);
            Hello stub = (Hello) registry.lookup("Hello");
            res = stub.sayHello();
        } catch (Exception e) {
            res = ("Client exception: " + e.toString());
            e.printStackTrace();
        }
        return res;
    }
}
%>
<%
out.println(Client.get());
%>

Server.jsp

<%@ page import="java.rmi.registry.Registry" %>
<%@ page import="java.rmi.registry.LocateRegistry" %>
<%@ page import="java.rmi.RemoteException" %>
<%@ page import="java.rmi.server.UnicastRemoteObject" %>
<%@ include file="Hello.jsp" %>
<%!
public class Server implements Hello {

    public Server() {}

    public String sayHello() {
        return "Hello, world!";
    }

}
%>
<%
        try {
            Server obj = new Server();
            Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);

            // Bind the remote object's stub in the registry
            Registry registry = LocateRegistry.getRegistry();
            registry.bind("Hello", stub);

            out.println("Server ready");
        } catch (Exception e) {
            out.println("Failed: "+e.toString());
            System.err.println("Server exception: " + e.toString());
            e.printStackTrace();
        }
%>

これをubuntutomcatサーバーで実行していますが、サーバーから次のエラーが発生します。

クライアント例外:java.lang.ClassCastException:$Proxy27をorg.apache.jsp.src.rmi.Client_jsp$Helloにキャストできません

これを修正するにはどうすればよいですか?ありがとう

4

0 に答える 0