============================================= Технології розробки корпоративних застосувань ============================================= :Лектор: Подрубайло Олександр Олександрович :Сайт курсу: `Технологія 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] `_ Матеріал підготували: `Владислав `_ та `Олександр `_.