Наша совместная команда Banwar.org

Связаться с нами

  • (097) ?601-88-87
    (067) ?493-44-27
    (096) ?830-00-01

Статьи

Приклад веб-додатки із застосуванням технологій WSO2 - Приклад веб-додатки із застосуванням технологій WSO2 - EmDev

  1. Установка і настройка середовища
  2. Створюємо базу і таблиці
  3. Створена сервіс для роботи з даними
  4. Створення web-додатки
  5. Робота з базою
  6. На закінчення

Не так давно на сайті WSO2 був опублікований цикл статей, присвячених розробці веб-додатків із застосуванням продуктів і технологій WSO2. Мені з одного боку сподобався цей приклад - так як він дає уявлення про особливості WSO2, з іншого боку не дуже сподобався (ну зовсім вже відвертим ігноруванням елементарних best practices). І я вирішив написати свій tutorial, виправивши або Додатк деякі місця вихідного.

Вихідний цикл статей доступний за адресами:

У нашому випадку ми будемо використовувати сдедует продукти і версії:

  • WSO2 Developer Studio 3.7.1 (але я постараюся мінімально використовувати фішки IDE - що б можна було реалізувати приклади без прив'язки до конкретного середовища програмування)
  • WSO2 Application Server 5.2.1 - сервер додатків (по суті справи Tomcat 7.x на базі платформи Carbon)
  • WSO2 Data Services Server 3.2.2 - сервер для роботи з базою даних (в нашому випадку буде реалізовувати DAO-рівень замість стандартних JPA / Hibernate)

Тексти програм доступні в github: https://github.com/akakunin/wso-health-tutorial/tree/1.0.0

Установка і настройка середовища

Почнемо з установки продуктів. WSO2 Developer Studio - це по суті справи Eclipse + набір плагінів WSO2 - не думаю що варто опісиват установку і настройку Eclipse.

Розгортання продуктів WSO2 робиться одноманітно (по суті справи розпакувати zip) - можна використовувати опис на базі WSO2 ESB , Яке я опублікував раніше.

Тут їсть тільки один важливий момент - так як нам буде необхідно запускати одночасно кілька продуктів WSO2 - нам треба "розвести" їх по портам. Для цього необхідно прописати різні значення в тезі <Offset> файлу carbon.xml

Для WSO2 AS залишимо це значення рівним 0 (тобто він буде доступний по портах 8280, 8243, 9443), для WSO2 DSS пропишемо 2 (тобто він буде використовувати порти 8282, 8245, 9445).

Підключимо зазначені сервіси до WSO2 DevStudio (знову-таки як це робити можна подивитися на прикладі ESB) - що б можна було запускати і дивитися логи відразу з середовища програмування.

Створюємо базу і таблиці

Для початку роботи нам треба створити базу даних і таблиці в ній. Для цього використовуємо MySQL і скрипт patiens.sql з вихідних:

DROP DATABASE IF EXISTS patientdb; CREATE DATABASE patientdb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL ON patientdb. * TO patientdb @ '%' IDENTIFIED BY "patientdb"; GRANT ALL ON patientdb. * TO patientdb @ 'localhost' IDENTIFIED BY "patientdb"; USE patientdb; SOURCE patients.sql;

Створена сервіс для роботи з даними

За роботи з даними у нас буде відповідати сервер WSO2 DSS.

Для того, що б сервер міг працювати з базою MySQL необхідно в Капков <DSS_HOME> / repository / components / lib покласти jar з драйвером MySQL.

Далі запускаємо його (можна прямо з Eclipse) і після запуску заходимо в його адмінку за адресою https: // localhost: 9445 / carbon (Як ми пам'ятаємо - ми налаштували Offset Для цього сервера в 2, так що всі порти зрушені на 2 від стандартних значень). Ім'я користувача-пароль за замовчуванням - admin / admin.

В консолі йдемо в Services -> Add -> Data Services -> Create

В консолі йдемо в Services -> Add -> Data Services -> Create

Створюємо сервіс "WSO2HealthIT" з namespace-му "http://ws.wso2.org/dataservice/samples/health"

org/dataservice/samples/health

Тиснемо Next і додаємо новий DataSource для роботи з нашою базою

Тиснемо Next і додаємо новий DataSource для роботи з нашою базою

Тиснемо "Test Connection" - що б переконатися що все пройшло як треба, після чого "Save".

Йдемо далі і додаємо 2 запити.

Перший запит - "registerPatientQuery", вибираємо створений DataSource, вставляємо SQL:

insert into patient (patientNumber, patientLastName, patientFirstName, phone, city, streetname, country) values ​​(: patientNumber,: patientLastName,: patientFirstName,: phone,: city,: streetname,: country)

Після чого натискаємо "Generate Input Mappings" (що б DSS сам згенерував нам необхідні вхідні параметри).

Після чого натискаємо Generate Input Mappings (що б DSS сам згенерував нам необхідні вхідні параметри)

Другий запит буде отримувати інформацію по пацієнту, називається "patientDetailsByNumberSQL" і використовує SQL:

select patientNumber, patientLastName, patientFirstName, phone, city, streetName, country from patient where patientNumber =?

Для даного сервісу потрібно буде ручками додати вхідний параметр "patientNumber".

Для генерації вихідних параметрів тиснемо "Generate Response" - нам будуть створені Output Mapping-й. Для соотвествующих споконвічного tutorial поміняємо імена у відповідності з наведеною нижче таблицею (наприклад в xml буде використовуватися теги patient-first-name і patient-last-name, streetname йде маленькими буквами)

Для соотвествующих споконвічного tutorial поміняємо імена у відповідності з наведеною нижче таблицею (наприклад в xml буде використовуватися теги patient-first-name і patient-last-name, streetname йде маленькими буквами)

Далі створюємо operations - які будуть працювати з створеними запитами.

Спочатку створюємо "registerPatient" Для роботи із запитом "registerPatientQuery"

Потім і operation "patientDetailsByNumber" яка звертається до запиту "patientDetailsByNumberSQL"

Все - можна натиснути Finish. Готово - через пару секунд в списку сервісів повинен з'явиться новий сервіс (WSO2HealthIT) який можна навіть протестувати через вбудований в DSS SOAP UI (натискаємо на "Try this service")

Для ледачих - насправді можна було б і не проходити весь цей виснажливий Wizard - а просто натиснути Upload - і завантажити WSO2HealthIT.dbs з вихідних - тільки попередньо перевірте настройки DataSource (ім'я користувача, пароль, ім'я бази).

Створення web-додатки

Важливо розуміти, що WSO2 AS - це по суті справи Tomcat 7 + Carbon (в принципі як і більшість інших продуктів WSO2 представляють собою той чи інший Open Source проект "посаджені" поверх їх OSGI платформи Carbon). В цьому плані розробка веб-додатки для WSO2 AS не відрізняється від розробка для того ж Tomcat.

В оригінальному tutorial проект створювався засобами IDE (Eclipse) - але тут у мене все-таки здригнулася рука - з цього проект був перероблений на використання Maven. Сам код поки не міняв - він "індійський" - його ми будемо покращувати в наступних "випусках". Зрештою - мета цього посібника - не навчилися правильно писати Java-додатка на JEE, а показати нюанси саме розробки під WSO2.

Так як додаток тепер використовуємо maven - то його можна легко імпортувати в Eclipse (або будь-яку іншу IDE).

Після складання програми (mvn clean install) йдемо в адмінку WSO2 AS ( https: // localhost: 9443 / carbon / admin ) І деплоім отриманий war-файл (Applications -> Add -> Web Applications). При Деплой можна вказати версію додатка (в моєму випадку я вказав 1.0.0 - це дозволяє запускати на сервері одновленменно кілька версій однієї програми).

0 - це дозволяє запускати на сервері одновленменно кілька версій однієї програми)

Після деплоя ми повинні побачити наше програму зі списку доступних і сам додаток буде доступно за адресою http: // localhost: 9763 / wso2-health / 1.0.0 /

0 /

Можна спробувати отримати пацієнта за номером, або зареєструвати нового пацієнта.

Робота з базою

Вихідний код програми не так цікавий - це більш менш стандартне просте веб-додаток. Цікаво, як здійснюється робота з базою. У WSO2 так, де в звичайному JEE додатку використовувався JPA, пропонується обращатсья до заздалегідь створеним Data Services (які ми створили на початку цього tutorial-а). Дане рішення виглядає не найефективнішим (насправді немає ніяких проблем з використанням того ж Hibernate в WSO2 AS) - однак при побудові "true" SOA додатків (особливо з огляду на модні зараз microservices) це рішення виглядає більш "іделогіческі" правильним. Якщо нам буде потрібно робота з пацієнтами з якогось іншого застосування, робота з даними буде здійснюватися через одні й ті ж, заздалегідь написані сервіси.

Отже, в коді програми найцікавішим виглядає класи QueryPatientDetailServlet і RegisterPatientServlet - а саме їх методи createPayload (в якому формується запит до сервера) і parseResultFromDSS - де відбувається розбір результату. Поки що ніяких клієнтів по WSDL не генерується, формування запиту, як і розбір результату відбуваються в ручну.

На закінчення

Отже, для першого разу досить. Ми розібралися що таке WSO2 AS (tomcat), що таке web application for WSO2 (звичайне веб-додаток), як створити сервіс для роботи з даними (за допомогою WSO2 DSS) і як працювати з цим сервісом з веб-додатки.

Далі ми додамо авторизацію (з використанням WSO2 Indentity Server), перевірку прав доступу до сервісу даних (додавши в ланцюжок WSO2 ESB) і ряд інших поліпшень.

21.03.2015

Новости

Banwar.org
Наша совместная команда Banwar.org. Сайт казино "Пари Матч" теперь доступен для всех желающих, жаждущих волнения и азартных приключений.