Есть вопрос, связанный с тем, как RMI загружает классы интерфейса.
Итак, вот моя установка:
Интерфейс, определяющий операцию, которую выполняет сервер rmi.
Общий
public interface Computable<T> extends Remote{
public AnalyticalServiceOutput<T> compute(Request request) throws RemoteException;
}
Сервер
Computable<Map<String, String>> stub = (Computable) UnicastRemoteObject.exportObject(this, 0);
Registry registry = LocateRegistry.createRegistry(2000);
registry.rebind("myservice", stub);
Клиент
Registry registry = LocateRegistry.getRegistry(host, port);
Computable c = (Computable) registry.lookup("myservice");
AnalyticalServiceOutput<Map<String, String>> output = c.compute(request);
Для развертывания я поместил общий jar в путь к классам как для клиента, так и для сервера.
Когда я запускал клиент и сервер в eclipse, все работало отлично. Чувствуя себя победителем, я перенес и клиент, и сервер на Linux-бокс. Но теперь, когда я делаю вызов для вычисления (запроса), клиент жалуется (ClassNotFoundException), что один из классов, определенных в общем, недоступен.
Любые идеи о том, что происходит.
Ваше здоровье