- •Рейтинг №1 Java-технологии распределенных компьютерных систем
- •Инструментальные средства java для создания распределенных приложений
- •Первая java-программа
- •Реализация стандартного вывода
- •Интерфейсы
- •Наследование
- •Import имя_пакета.*;
- •Ссылки this и super
- •Исключения
- •Массивы
- •Классы, методы пакета java.Net используемое для создания socket
- •Виртуальная машина java
- •Распределительные компьютерные системы и их характеристики
- •Промежуточное программное обеспечение распределительных компьютерных систем
- •Архитектура java rmi
- •Порядок создания распределенного rmi-приложения
- •Достоинства и недостатки java-rmi
- •Технология corba
- •Этапы создания corba приложений
- •Определение интерфейса
- •Создание файлов client и server corba-приложений
- •Код локального интерфейса
- •Html. Основные теги html. Html-документы
- •Основные теги html
- •Форма html-документа
- •Основной поток cgi-программ
- •Сервлет. Технология java
- •Компоненты ejb
- •Реляционные структуры баз данных
- •Основные команды ddl
- •Основные команды dml
- •Основные команды dcl
- •Создание бд и таблиц с использованием sql
- •Основные этапы создания бд и таблиц
- •Использование idbc api
- •Пример java-приложения работающего с субд
- •Страницы jsp
- •Теги и встроенные объекты jsp
- •Основные теги jsp-страниц.
- •Xml. Структура xml-документа
- •Пространство имен
- •Схемы xml
- •Архитектуры распределенных приложений. Web-сервисы
- •Простая web-служба
- •Код клиента web-службы
- •Архитектура web-служб
- •Jms. Архитектура jms
- •Модели сообщений jms
- •Архитектура “точка-точка”
- •Пример распределенного jms-приложения
Создание файлов client и server corba-приложений
Для создания JAVA-файлов клиента и сервера CORBA приложений необходимо выполнить следующие действия:
Импортировать пакеты поддержки CORBA.
import org.omg.CosNaming*;//Сервис имен
import org.omg.CORBA*;//Классы поддержки стандарта
CORBA.
Создать и инициализировать ORB
ORB orb=ORB init(args.null);
При этом для сервера CORBA дополнительно создается и регистрируется сервант:
Имя_интерфейса Servant экз_серванта=
new_имя_интерфейса Servant();
orb.connekct(экз_серванта);
Обеспечить вхождение в контекст имен
org.omg.CORBA.Object объект=
org.resolve_initial_referencs(“NameService”);
NamingContext контекстИмени=
NamingContext Helper.narrow(объект);
Получить ссылку на объект
NamingComponent компонент Имени=
newNameComponent(“ИмяКомпонента”””);
NameComponent путь[]={компонент имени};
Далее в п.4 нужно записать:
КонтекстИмени.rebind(путь,экз_Серванта);
В тоже время для клиента в п.4записываем:
Имя класса экз_Класса=Имя Класса Helper(
КонтекстИмени.resolve(путь));
Для сервера ожидаем со стороны клиента:
java.lang.Object объект Синхронизации=
new java.lang.Object();
synchronized(объект синхронизации)
{объект синхронизации.wait()}
В тоже время на пятом этапе клиент обращается к удаленному методу
экземпляр Класса.методКлассаСервера();
При этом файл сервера CORBA приложений имеет вид:
import org.omg.CosNaming.*;
import org.omg.CosNaming Context package.*;
import org.omg.CORBA.*;
class Stringer Servant extends_Stringer ImplBase{
public String getString()
{return “Hello from CORBA”;}
public class Stringer Server{
public static void main(String[]args)throws Exception{
ORB orb=ORB.init(args,null);
Stringer Servant servant=new Stringer Servant();
orb connect(servant);
org.omg.CORBA.Object object=
orb.resulve_initial_references(“NameService”);
NameComponent component=new NameComponent
(“StringName”,””);
NameComponent puth[]={component};
context.rebing(path,servant);
java.lang.Object.sync=
new java.lang.Object();
synchronized(sync){sync.waint();}}}
В тоже время java-файл клиентского приложения содержит код:
import org.omg.CosNaming.*;
import.org.omg.CORBA.*;
class StringerClient{
public static void main(string[]args)throws Exception{
ORB orb=ORB.init(args,null);
org.omg.CORBA.Object object=
orb.resolve_initial_references(“NameService”);
NameContext context=NamingContext Helper.nerrow;
NameComponent component=new NameComponent(“StringName”);
NameComponent path[]={component};
Stringer stringer=StringerHelper.nerrow(context=resolve(path));
ystem.out.println(stringer.getString());}}
После компиляции для запуска выполним команды:
Запустим в отдельной сессии сервер имен jdk:
>fnameserv-ORBInitialPort номер Порта
(по умолчанию используется порт 900).
Запускаем в отдельной сессии сервер приложений
>java StringerServer-ORBInitialPort Номер Порта
Запускаем клиентское приложение
>java StringerClient-ORBInitialPort номер Порта –ORBInitialHost Имя Сервера.
-
Достоинства
Недостатки
Языковая независимость
Платформенная независимость
Динамические вызовы
Масштабируемость
Индустриальная поддержка
CORBA-сервисы
Нет передачи данных по значению.
Отсутствует наименование с помощью URL.
В состав ORG входит более 700 компаний-производителей индивидуальная спецификация разработана этим консорциумом становиться стандарт.
РЕЙТИНГ №2
Структура распределенного J2EE JAVA-приложения
Структура J2EE java-приложений состоит из 4-х слоев:
Клиент (html-страница, JAVA-аплет, JAVA-приложение).
Web-слой (сервлеты, JSP-страницы).
EJB-слой (bin и интерфейсы для работы с ним).
СУБД.
Один или несколько слоев могут отсутствовать, что придает гибкости распределенным приложениям.
Hello World распределенное J2EE JAVA-приложение
Средства разработки
J2SE (v. 1.5.0-12);
J2EE JAVA Web-сервер (Sun JAVA SAS PE9);
Net Beans (v.5.5.1).
Структура
<html>
<head>
<title>J2EE-Application</title></head>
<body>
<H2 Align=”center”>J2EE web-Client</H2>
<p align=”left”>Enter your name</p>
<from method=”bet”action=http://localhost:8080/HI/”hello”>
<p><input type=”text”name=”name”size=”is”></p>
…
Hello Servlet.java
package web;
import java.io.*;
import java.net.*;
import javax.ejb*;
import java servlet.*;
import javax servlet.http.*;
import my_ejb;
public class Hello Servlet extends;
http Servlet{private Hello Session Local h;
protected void process Request(http Servlet Request reg http ServletRespase res)
throws Servlet Exseption,IDException{
res.setContentType(“text/html;charset=Windows1251);
PrinterWriter out=res.getWriter();
String message.name,message_ejb;
name=reg.getParameter(“name”);
message=”Hello”;
message=message + name;
message_ejb=h.sayHello();
out.println(“<html><head>”);
out.println(“title>J2EE Aplication</title>”);
out.println(“</head><body>”);
out.println(“<p>”message+”</p>”);
out.println(“<p>”+message_ejb+”</p>”);
out.println(“</body></html>”);
out.else();}
protected void doGet(Http Servlet Request reg,http Servlet Response res);
throws ServletException,IoException{
process Request(res,reg);
}}