=============================================
Технології розробки корпоративних застосувань
=============================================
:Лектор: Подрубайло Олександр Олександрович
:Сайт курсу: `Технологія Java EE `_
.. contents::
:depth: 3
..
--------------
Лекція 1. JDBC. Servlets.
=========================
date: 2016-09-28 12:29:32 +0300
Вы – жертвы экспериментальной программы
© Подрубайло О. О.
JDBC
----
JDBC – Java Database Connectivity. JDBC – паттерн моста (bridge). Тут у
ролі реалізації виступають класи JDBC, а у ролі абстракції – застосунок,
який пише програміст.
Клієнт працює з базою в рамках транзакцій. Транзакції є атомарними
операціями. Транзакції задовольняють принципу ACID:
- Atomic
- Consistency
- Isolation
- Durability
На практиці ACID є доволі накладним, тому сучасні системи, що працюють з
розоділеними даними відовідають принципам BASE
- Basicaly Availabile
- ще щось там
- Eventual Consistency
JDBC – це доволі проста і тупа штука, і вже не входить у склад JEE.
Схема роботи з JDBC:
#. Встановити з’єднання
#. Створити запит (statement)
- Statement – просто текст запиту
- PreparedStatement – готує запит із параметрами.
- CallableStatement – заздалегідь заготовані процедури. Ці процедури
використовуються в базі, щоб оптимізувати виконання спеціальних
запитів.
#. Отримати ResultSet
Як працювати із з’єднаннями
~~~~~~~~~~~~~~~~~~~~~~~~~~~
З’єднання – канал зв’язку користувача з базою. На одного користувача
виділяти одне з’єднання – погано. На одного клієнта (застосунок) треба
виділяти декілька з’єднань. Точна кількість з’єднань залежить від
великої кількості різних факторів. Зазвичай для реалізації декількох
з’єдннь використовується пул з’єднань (Connection pool).
Коли іде робота тільки з одним з’єднанням – це не дуже правильно.
З’єднання можуть перериватися по різних причинах.
Варіанти
- на кожну транзакцію використовувати своє з’єднання і після транзакції
закривати.
- моніторити стан з’єднань і закривати вбиті
::
+-----------------+
|ConnectionManager|
+-----------------+
|+getConnection() |
+-----------------+
|
|
+-----------------+
| DAO |
+-----------------+
|+findById() |<---- // connManager.getConnection()
+-----------------+
Правильно у ``getConnection`` ловити помилки і у блоці ``catch`` кидати
``RuntimeException``, який кладе увесь застосунок. Логіка створення
з’єднання (можливого перестворення у випадку помилок, тощо) повинна бути
у менеджері з’єднань. **Цей підхід застосовний тільки для синхронних
операцій**.
Servlet
-------
Сервлет – краєугольный камень веб-разработки на Java
Веб-контейнер – фігня, яка вміє прийняти ``war``, правильного його
встановити і запустити.
Коли Java тільки з’явилася і почала працювати з вебом, сервери були
слабкі і була точка зору, що Java-аплета буде достатньо. Проблеми
аплетів:
- працюють на стороні клієнта, а значить клієнт при бажанні може їх
модифікувати
- jar-файли великі (особливо, якщо там багато залежностей)
Servlet виконується тільки на сервері, повертає веб-контейнеру
ServletResponse, а веб-контейнер повертає читабельну для користувача
інформацію без java-коду і java-логіки.
В Java сервлети представлені у вигляді ``HttpServlet``. Сам Servlet
реалізовує патерн *template method*.
Наразі в чистому вигляді сервлети використовуються рідко. Зазвичай –
разом із рядом надбудов. Але це все одно ті ж самі севлети з тими ж
принципами роботи.
--------------
Лекція 2. JSF.
==============
date: 2016-10-05 12:29:32 +0300
- `Слайди
лекції(pdf) `_
- `Слайди лекції(Google
presentation) `_
- `Простий приклад застосунку з використанням
JSF `_
--------------
Лекція 3. JPA.
==============
date: 2016-10-12 12:29:32 +0300
- `Слайди
лекції(pptx) `_
- `Простий приклад застосунку з використанням JPA
(zip) `_
- `Простий приклад застосунку з використанням JPA
(GitHub) `_
Матеріал підготували: `Юрій `_ та
`Віта `_
--------------
Лекція 5. JMS.
==============
date: 2016-11-02 12:20:00 +0300
- `Слайди лекції (google
presentation) `__
- `Пример использования JMS (google
drive) `__
Матеріал підготували: `Тетяна `_ та `Андрій `_
--------------
Лекція 7. Авторизація та автентифікація в JavaEE.
=================================================
date: 2016-11-16 12:20:32 +0200
JAAS
----
- JAAS – Java Authentication and Authorization Service
- Присутній як в Java EE, так і в Java SE
- Доволі низькорівневий
- Документація
- `автентикація `__
- `авторизація `__
- `JAAS reference
guide `__
WildFly
-------
Налаштування серверу застосунків
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Щоб налаштувати авторизацію і автентикацію у wildfly, необхідно у
standalone.xml додати security realm:
.. code:: xml
Також у проекті потрібно описати wildfly-web.xml
Приклад проекту
~~~~~~~~~~~~~~~
Приклад JavaEE проекту з використанням JAAS:
`[github] `__.
Автор проекту: `Дмитро `__
Лекція 11. Моніторинг та оптимізація Java-застосунків.
======================================================
date: 2016-12-21 12:20:00 +0200
- Слайди лекції. `[github] `_, `[slideshare] `_
Матеріал підготували: `Владислав `_ та `Олександр `_.