Spec-Zone .ru
спецификации, руководства, описания, API
След: RMI
Раздел: Запись Сервера RMI
Разработка Удаленного Интерфейса
Домашняя страница > RMI

Разработка Удаленного Интерфейса

В ядре вычислить механизма протокол, который позволяет задачам быть представленными вычислить механизму, вычислить механизму, чтобы выполнить те задачи, и результаты тех задач, которые будут возвращены клиенту. Этот протокол выражается в интерфейсах, которые поддерживаются вычислить механизмом. Удаленная передача для этого протокола иллюстрируется в следующем числе.

удаленная передача между клиентом и вычислить механизмом

Каждый интерфейс содержит единственный метод. Удаленный интерфейс вычислить механизма, Compute, позволяет задачам быть представленными механизму. Клиентский интерфейс, Task, определяет, как вычислить механизм выполняет представленную задачу.

compute.Compute интерфейс определяет удаленно доступную часть, вычислить механизм непосредственно. Вот исходный код для Compute интерфейс:

package compute;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Compute extends Remote {
    <T> T executeTask(Task<T> t) throws RemoteException;
}

Расширяя интерфейс java.rmi.Remote, Compute интерфейс идентифицирует себя как интерфейс, методы которого могут быть вызваны от другой виртуальной машины Java. Любой объект, который реализует этот интерфейс, может быть удаленным объектом.

Как элемент удаленного интерфейса, executeTask метод является удаленным методом. Поэтому, этот метод должен быть определен как являющийся способным к броску a java.rmi.RemoteException. Это исключение выдается системой RMI от удаленного вызова метода, чтобы указать, что или коммуникационный отказ или ошибка протокола произошли. A RemoteException проверенное исключение, таким образом, любой код, вызывающий удаленный метод, должен обработать это исключение или ловящий его или объявляющий это в throws пункт.

Второй интерфейс, необходимый для вычислить механизма, Task интерфейс, который является типом параметра к executeTask метод в Compute интерфейс. compute.Task интерфейс определяет интерфейс между вычислить механизмом и работой, которую это должно сделать, обеспечивая способ запустить работу. Вот исходный код для Task интерфейс:

package compute;

public interface Task<T> {
    T execute();
}

Task интерфейс определяет единственный метод, execute, который не имеет никаких параметров и не выдает исключений. Поскольку интерфейс не расширяется Remote, метод в этом интерфейсе не должен перечислить java.rmi.RemoteException в throws пункт.

Task у интерфейса есть параметр типа, T, который представляет тип результата вычисления задачи. Этот интерфейс execute метод возвращает результат вычисления, и таким образом его тип возврата T.

Compute интерфейс executeTask метод, поочередно, возвращает результат выполнения Task экземпляр, который передают к этому. Таким образом, executeTask у метода есть свой собственный параметр типа, T, это связывает его собственный тип возврата с типом результата переданного Task экземпляр.

RMI использует механизм сериализации объекта Java, чтобы транспортировать объекты значением между виртуальными машинами Java. Для объекта, который рассмотрят сериализуемый, его class должен реализовать java.io.Serializable интерфейс маркера. Поэтому, классы, которые реализуют Task интерфейс должен также реализовать Serializable, как должен классы объектов, используемых для результатов задачи.

Различные виды задач могут быть выполнены a Compute возразите, пока они - реализации Task ввести. Классы, которые реализуют этот интерфейс, могут содержать любые данные, необходимые для вычисления задачи и любых других методов, необходимых для вычисления.

Вот то, как RMI делает, это простое вычисляет возможный механизм. Поскольку RMI может предположить что Task объекты пишутся в языке программирования Java, реализациях Task объект, которые были ранее неизвестны вычислить механизму, загружается RMI в виртуальную машину Java вычислить механизма как необходимый. Эта возможность позволяет клиентам вычислить механизма определить новые виды задач, которые будут выполнены на машине сервера, не нуждаясь в коде, который будет явно установлен на той машине.

Вычислить механизм, реализованный ComputeEngine class, реализации Compute интерфейс, позволяя различным задачам быть представленным этому звонками в executeTask метод. Эти задачи выполняются, используя реализацию задачи execute метод и результаты, возвращаются удаленному клиенту.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Запись Сервера RMI
Следующая страница: Реализация Удаленного Интерфейса