пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ


Этапы (шаги) разработка RMI приложений. Соглашения о передаче данных. Пример реализации серверного кода.

Для создания такого приложения необходимо создать 4 файла:

* Создать удаленный публичный интерфейс (интерфейс, обеспечиваемый сервером), расширяющий интерфейс Remote и определяющий прототип метода, реализующего требуемые функции. Каждый метод удаленного интерфейса должен объявлять java.rmi.RemoteException в своем предложении throws вдобавок к любым исключениям, специфичным для приложения.

1) Файл AddServerIntf.java (определение интерфейса):

 

import java.rmi.*;

public interface AddServerIntf extends Remote

{ //расширяет интерфейс Remote, объявление абстрактного

//метода интерфейса. Здесь метод, принимающий два double-параметра,

//тело - в реализующем классе

double add (double d1, double d2) throws RemoteException;

//все удаленные методы могут выбрасывать исключение //RemoteException

}

* Второй программный модуль – серверный модуль реализующий задачу клиента. Данный класс расширяет(наследует) класс UnicastRemoteObject и реализует интерфейс AddServerIntf. (Все удаленные классы должны расширять класс UnicastRemoteObject).

Файл AddServerImpl.java:

import java.rmi.*;

import java.rmi.server.*;

public class AddServerImpl extends UnicastRemoteObject implements

// UnicastRemoteObject – поддерживаются однонаправленые //серверы

AddServerIntf

{ //расширение класса UnicastRemoteObject и

//реализация интерфейса AddServerIntf

public AddServerImpl() throws RemoteException{

//конструктор класса AddServerImpl()

//все удаленные методы могут выбрасывать исключение RemoteException

}

public double add(double d1, double d2) throws RemoteException

//реализация удаленного метода (метод сервера вычисляет сумму

//параметров

{return d1+d2;}

}

* Третий файл содержит консольную (main) программу сервера, которая должна обновить RMI-реестр на машине-сервере (при помощи метода rebind() класса Naming, пакета java.rmi.*. Он связывает имя сервера с объектной ссылкой

3). Файл AddServer.java:

import java.net.*;

import java.rmi.*;

public class AddServer

{

public static void main(String args[])

//консольная программа сервера

{

try {

AddServerImpl addServerImpl=new AddServerImpl();

//Создается объект класса AddServerImpl

Naming.rebind("AddServer", addServerImpl);

//задается имя сервера, которое связывается с объектной ссылкой

}

catch (Exception e)

{

System.out.println("Exception: "+e);

}}}

* Создается консольное приложение клиента, реализующее клиентскую часть распределенного приложения. Данное приложение реализовано так, что IP- адрес (1-й параметр или имя сервера) и аргументы, для инициализации входных параметров метода, выполняющегося на сервере (второй и третий параметр, задаваемый через пробел), передаются в командной строке.

4). Файл AddClient.java:

import java.rmi.*;

public class AddClient {

public static void main(String args[])

{

try

{String addServerURL ="rmi://" + args[0] + "/AddServer";

//формирование строки в синтаксисе формирования URL,

//в соответствии с протоколом rmi, т.е. IP-адрес сервера и строку //AddServer –имя сервера

AddServerIntf addServerIntf = (AddServerIntf)Naming.lookup(addServerURL);

// Метод Naming.lookup (addServerURL) принимает rmi URL,

//и возвращает ссылку на объект типа AddServerIntf,

// которому можно направлять удаленные вызовы

System.out.println("The firt number is: " + args[1]);

double d1 = Double.valueOf(args[1]).doubleValue();

//формирование первого значения

System.out.println("The second number is: " + args[2]);

double d2 = Double.valueOf(args[2]).doubleValue(); //превращение строковой переменной вdouble

//формирование второго значения

System.out.println("The sum is: " + addServerIntf.add(d1,d2));

// удаленный вызов метода add, возвращающего сумму чисел

}

catch (Exception e)

{

System.out.println("Exceptio is: " + e );

}}}

Откомпилировать все 4 исходных кода компилятором javac.


28.05.2018; 14:29
хиты: 590
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь