Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методпособие РП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.56 Mб
Скачать

Реализация Java rmi с использованием объектов (консоль)

Структура серверного приложения:

Структура клиентского приложения:

Содержимое файлов:

Tovar.java

package types;

import java.io.Serializable;

public class Tovar implements Serializable{

private String name;

private int kol;

private int price;

public Tovar() {

this.name = "";

this.kol = 0;

this.price = 0;

}

public Tovar(String name, int kol, int price) {

this.name = name;

this.kol = kol;

this.price = price;

}

public int getKol() {

return kol;

}

public void setKol(int kol) {

this.kol = kol;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getPrice() {

return price;

}

public void setPrice(int price) {

this.price = price;

}

public int getSumma() {

return this.price * this.kol;

}

}

TovarOperation.java

package operation;

import java.rmi.Remote;

import java.rmi.RemoteException;

import java.util.List;

import types.Tovar;

public interface TovarOperation extends Remote{

List<Tovar> getListOfTovar() throws RemoteException;

List<Tovar> addNewTovar(Tovar tovar) throws RemoteException;

int getSumOfTovar() throws RemoteException;

}

TovarOperationImpl.java

package operation;

import java.rmi.RemoteException;

import java.rmi.server.UnicastRemoteObject;

import java.util.ArrayList;

import java.util.List;

import types.Tovar;

public class TovarOperationImpl extends UnicastRemoteObject implements TovarOperation{

static List<Tovar> lstTovar = new ArrayList<Tovar>();

static{

lstTovar.add(new Tovar("Товар1", 10, 100));

lstTovar.add(new Tovar("Товар2", 20, 200));

lstTovar.add(new Tovar("Товар3", 30, 300));

lstTovar.add(new Tovar("Товар4", 40, 400));

}

public TovarOperationImpl() throws RemoteException{

}

@Override

public List<Tovar> getListOfTovar() throws RemoteException{

return lstTovar;

}

@Override

public List<Tovar> addNewTovar(Tovar tovar) throws RemoteException{

lstTovar.add(tovar);

return lstTovar;

}

@Override

public int getSumOfTovar() throws RemoteException{

int sum = 0;

for(Tovar tovar: lstTovar)

sum += tovar.getSumma();

return sum;

}

}

RunServer.java

package registration;

import java.rmi.registry.LocateRegistry;

import java.rmi.registry.Registry;

import operation.TovarOperationImpl;

public class RunServer {

public static void main (String[] argv) {

try {

// создание экземпляров классов для регистрации

TovarOperationImpl operationImpl = new TovarOperationImpl();

// создаём реестр

Registry registry = LocateRegistry.createRegistry(1199);

// регистрация классов

registry.bind("rmiTest02", operationImpl);

System.out.println ("Tovar Server is ready.");

} catch (Exception e) {

System.out.println ("Tovar Server failed: " + e);

}

}

}

RunClient.java

package client;

import java.rmi.Naming;

import java.util.ArrayList;

import java.util.List;

import operation.TovarOperation;

import types.Tovar;

public class RunClient {

public static void main (String[] argv) {

try {

TovarOperation tovarOperation = (TovarOperation)Naming.lookup("//localhost:1199/rmiTest02");

List<Tovar> lstRet = new ArrayList<>();

// 1 метод

lstRet = tovarOperation.getListOfTovar();

doVivod(lstRet);

// 3 метод

System.out.println ("Общая сумма товара: " + tovarOperation.getSumOfTovar());

// 2 метод

Tovar tovar = new Tovar("Товар555", 55, 555);

lstRet = tovarOperation.addNewTovar(tovar);

doVivod(lstRet);

// 3 метод

System.out.println ("Общая сумма товара: " + tovarOperation.getSumOfTovar());

} catch (Exception e) {

System.out.println ("Message Client exception: " + e);

}

}

public static void doVivod(List<Tovar> lst){

int i = 0;

System.out.println("#\tНазвание\tЦена\tКол-во\tСумма");

for(Tovar tovar: lst)

System.out.println(++i + "\t" + tovar.getName() + " \t" +

tovar.getPrice() + "\t" +

tovar.getKol()+" \t" +

tovar.getSumma());

System.out.println();

System.out.println();

}

}

Результаты выполнения

Результат запуска сервера

Результат запуска клиента: