- •Лабораторная работа №1. Знакомство с Java Задание
- •Ход работы
- •Лабораторная работа №2. Gui приложение на Java Задание
- •Требования:
- •Лабораторная работа №3. Реализация Java rmi Задание
- •Требования:
- •Реализация простого приложения Java rmi (консоль)
- •Определение удаленного интерфейса
- •Реализация удаленного интерфейса
- •Реализация серверного приложения
- •Реализация клиентского приложения
- •Реализация Java rmi с использованием объектов (консоль)
- •Реализация Java rmi с использованием объектов (gui)
- •Возможные ошибки
- •Лабораторная работа №4. Реализация .Net Remoting Задание
- •Требования:
- •Реализовать приложение, содержащее не менее 4х-5ти классов (агрегация, ассоциация, наследование и т.Д.) ;
- •Приложения с графическим интерфейсом должно позволять работать со справочниками: добавление, удаление, получение всего списка;
- •Определение удаленного интерфейса
- •Реализация удаленного интерфейса
- •Реализация серверного приложения
- •Реализация клиентского приложения
- •Реализация приложения c# .Net Remoting с графическим интерфейсом
- •Лабораторная работа №5. Реализация веб-сервиса Задание
- •Требования:
- •Реализовать приложение, содержащее не менее 4х-5ти классов (агрегация, ассоциация, наследование и т.Д.) ;
- •Приложения с графическим интерфейсом должно позволять работать со справочниками: добавление, удаление, получение всего списка;
- •Приложения с графическим интерфейсом должно позволять работать с основной таблицей: добавление, удаление, получение всего списка, пересчет какого-нибудь вычисляемого поля.
- •1. Простой веб-сервис
- •1.1. Реализация сервиса
- •1.2. Тестирование сервиса
- •1.3. Реализация клиента для сервиса в NetBeans на Java
- •1.4. Реализация клиента для сервиса в Visual Studio на c#
- •2. Сервис TovarService
- •2.1. Реализация сервиса
- •2.2. Реализация клиента для сервиса в NetBeans на Java
- •2.3. Реализация клиента для сервиса в Visual Studio на c#
Реализация 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();
}
}
Результаты выполнения
Результат запуска сервера
Результат запуска клиента:
