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にキャストできません
これを修正するにはどうすればよいですか?ありがとう