Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Веб-сервіс Java Enterprise Edition (Java EE)

Цей сервіс містить набір специфікацій, документації для мови Java, які необхідні при роботі з мережними програмами та севісними засобами:

динамічно генеровані веб-сторінки (Java Server Pages);

веб-сервіси;

компоненти повторного застосування – Enterpirse Java Beans;

сервіс обміну повідомленнями (Java Message Queue);

інші сервісні технології.

Веб-сервіс (веб-служба) – ідентифікується рядком URI (Unified Resource Identifier, універсальний ідентифікатор ресурсів), ресурси котрої (властивості та методи) описані за допомогою спеціальної мови. Доступ до ресурсів здійснюється через протокол SOAP (Simple Object Access Protocol), який представляє собою XML-запити, що передаються за допомогою інтернет-протоколу високого рівня (найчастіше HTTP). За своєю архітектурою веб-сервіси нагадують класи об’єктно-орієнтованих МП (і в межах Java EE генеруються на основі класів) але є і певні відмінності.

Ключовим поняттям цього веб-сервісу є повідомлення (message), яке складається з однієї чи кількох змінних. Замість методів класів у веб-сервісах використовуються операції, які визначаються вхідним і вихідним повідомленнями. Після виклику операції змінні, що входять до вхідного повідомлення, отриманого по протоколу SOAP, інтерпретуються як параметри відповідного методу класу, який лежить в основі сервісу. Після завершення роботи методу формується вихідне повідомлення, що містить повернуте методом значення, яке після цього за допомогою SOAP відправляється клієнту. Така архітектура сервісу дозволяє викликати його методи асинхронно.

Спілкування з веб-сервісом здійснюється за допомогою протоколу SOAP. Для виклику операції веб-сервісу, визначеної у його WSDL-описі, використовується XML-запит, що називається SOAP– envelope і складається у загальному випадку з заголовку (SOAP– header; може бути порожнім) і тіла запиту (SOAP-body). Заголовок може містити додаткову інформацію стосовно запиту, таку як його пріоритетність, термін обробки і т.п. У тілі міститься одна чи декілька операцій веб-сервісу з відповідними параметрами.

Взаємодія Веб-сервісу через протокол SOAP.Веб-сервіс (веб-служба) ідентифікується рядком URI (Unified Resource Identifier, універсальний ідентифікатор ресурсів), ресурси котрої (властивості та методи) описані за допомогою спеціальної мови. Доступ до ресурсів такої системи здійснюється через протокол SOAP (Simple Object Access Protocol, простий протокол доступу до об’єктів), який представляє собою особливим чином сформульовані XML-запити, що передаються за допомогою інтернет-протоколу високого рівня (найчастіше HTTP). За своєю архітектурою веб-сервіси нагадують класи об’єктно-орієнтованих МП (і в межах Java EE генеруються на основі класів), проте є і певні відмінності [16].

Ключовим поняттям для веб-сервісу є повідомлення (message), яке складається з однієї чи кількох змінних. Замість методів класів у веб-сервісах використовуються операції, які визначаються вхідним і вихідним повідомленнями. Після виклику операції змінні, що входять до вхідного повідомлення, отриманого по протоколу SOAP, інтерпретуються як параметри відповідного методу класу, який лежить в основі сервісу. Після завершення роботи методу формується вихідне повідомлення, що містить повернуте методом значення, яке після цього за допомогою SOAP відправляється клієнту. Така архітектура сервісу дозволяє викликати його методи асинхронно.

Протокол SOAP.Спілкування з веб-сервісом здійснюється за допомогою протоколу SOAP. Для виклику операції веб-сервісу, визначеної у його WSDL-описі, використовується XML-запит, що називається SOAP- envelope і складається у загальному випадку з заголовку (SOAP-header; може бути порожнім) і тіла запиту (SOAP-body). Заголовок може містити додаткову інформацію стосовно запиту, таку як його пріоритетність, термін обробки і т.п. У тілі міститься одна чи декілька операцій веб-сервісу з відповідними параметрами.

Приклад запиту, який викликає операцію сервісу MyService.someMethod(32.5, true), приведено нижче, там же приведене й SOAP-повідомлення, повернуте сервісом.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:q0="http://webservice.demo" xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Body>

<q0:someMethod>

<q0:arg0>32.5</q0:arg0>

<q0:arg1>true</q0:arg1>

</q0:someMethod>

</soapenv:Body>

</soapenv:Envelope>

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<soapenv:Body>

<someMethodResponse xmlns="http://webservice.demo">

<someMethodReturn>Nothing to see here</someMethodReturn>

</someMethodResponse>

</soapenv:Body>

</soapenv:Envelope>

 

Сервлети та мова WSDL. Для доступу до веб-сервісів використовуються сервлети – Java-програми, які виконуються на стороні серверу і розширюють його функціональність. Сервлети широко застосовуються в технології Java EE, зокрема, в них перетворюються сторінки на мові JSP. Базова функціональність сервлетів закладена у їхній можливості обробки HTTP-запитів GET і/або POST. Згідно до специфікації веб-програм, існує можливість задавати (за допомогою конфігураційних XML-файлів) межі дії окремих сервлетів (servlet mapping). Рішення, який з доступних сервлетів застосовувати, приймається на основі аналізу URL-адреси запиту. Наприклад, веб-сервіси, які розташовані у директорії /services проекту, оброблюються стандартним сервлетом Apache Axis. За допомогою нього, зокрема, можна отримати WSDL-опис сервісу, розташований за адресою /services/[назва сервісу]?wsdl. Цей же сервлет виконує парсінг відправлених на сервер SOAP-повідомлень, їхню передачу відповідному Java-класу і складання SOAP-повідомлень з результатами роботи. Таким чином Axis забезпечує повну функціональність веб-сервісу [17]..

Мова WSDL.Для опису загальнодоступних ресурсів веб-сервісу використовується мова WSDL (Web Service Definition Language) на основі XML; середовище програмування Eclipse дозволяє автоматичне створення таких описів на основі класів Java. У мові визначені наступні основні типи даних:

рядки (xsd:string),

цілі числа (xsd:int, xsd:long, xsd:short, xsd:integer, xsd:decimal), числа з плаваючою комою (xsd:float, xsd:double),

логічний тип (xsd:boolean),

послідовності байт (xsd:base64Binary, xsd:hexBinary),

дата і час (xsd:time, xsd:date, xsd:g),

об’єкти (xsd:anySimpleType).

В якості змінних для повідомлень також можна використовувати послідовності, створені з фіксованої кількості змінних простих типів (це відповідає методам з декількома вхідними параметрами). Типовий WSDL-файл має наступну структуру.

<wsdl:definitions […]>

<!-- Декларація типів, що використовуються в сервісі -->

<wsdl:types>

<element name="someMethod">

<complexType>

<sequence>

<element name="arg0" type="xsd:double"/>

<element name="arg1" type="xsd:boolean"/>

</sequence>

</complexType>

</element>

<element name="someMethodResponse">

<complexType>

<sequence>

<element name="someMethodReturn" type="xsd: string"/>

</sequence>

</complexType>

</element>

</wsdl: types>

<! -- Декларації повідомлень -->

<wsdl: message name="someMethodResponse">

<wsdl:part element="impl:someMethodResponse" name="parameters">

</wsdl:part>

</wsdl:message>

<wsdl:message name="someMethodRequest">

<wsdl:part element="impl:someMethod" name="parameters">

</wsdl:part>

</wsdl:message>

<!-- Декларації операцій -->

<wsdl:portType name="MyService">

<wsdl:operation name="someMethod">

<!-- Вхідне повідомлення -->

<wsdl:input message="impl:someMethodRequest" name="someMethodRequest">

</wsdl:input>

<!-- Вихідне повідомлення -->

<wsdl:output message="impl:someMethodResponse" name="someMethodResponse">

</wsdl: output>

</wsdl:operation>

</wsdl:portType>

<!-- Декларація прив’язки до SOAP -->

<wsdl:binding name="MyServiceSoapBinding" type="impl:MyService">

<wsdlsoap:binding […]/>

<!-- Знову декларації операцій -->

<wsdl:operation name="someMethod">

<wsdlsoap:operation soapAction=""/>

<wsdl:input name="fahrenheitToCelsiusRequest">

<wsdlsoap:body use="literal"/>

</wsdl:input>

<wsdl:output name="fahrenheitToCelsiusResponse">

<wsdlsoap:body use="literal"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<!-- Декларація веб-сервісу -->

<wsdl:service name="MyServiceService">

<wsdl:port binding="impl:MyServiceSoapBinding" name="MyService">

<wsdlsoap:address location=[…]/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

Спочатку декларуються типи, які будуть використовуватися в сервісі. Приведений нижче WSDL-опис належить веб-сервісу MyService з єдиним методом

String someMethod(double arg0, boolean arg1),

на основі чого було згенеровано два типи даних, які відповідають вхідним та вихідним аргументам методу. Ці типи застосовуються в описах someMethodRequest і someMethodResponse – вхідного та вихідного повідомлень для операції someMethod.

Операції декларуються в описі інтерфейсу сервісу (декларація wsdl:portType) і далі в описі прив’язки сервісу до SOAP (декларація wsdl:binding), причому у другому випадку також оговорюється спосіб виклику (<wsdlsoap:body use="literal"/>). За рахунок цього дозволяється при виклику операції використовувати ті ж назви параметрів, що й у методі класу. В кінці WSDL-файлу знаходиться власне декларація веб-сервісу (<wsdl:service>), у якій міститься інформація щодо його розташування (параметр location).

Середовище Eclipse підтримує зручне графічне зображення WSDL-файлів; файл, що відповідає веб-сервісу MyService, показаний на рис. 2.4.

Рис. 2.4. Схема сервісу, отримана за допомогою Eclipse

 

В межах веб-сайта ІТК виконується завдання для звернення до веб-сервису шляхом натиснення на відповідну технологію. Сайт видає відповідь у наступній формі (рис.2.5)

Ви зараз знаходитесь у: Технології » Веб-сервіси » Приклад

Назва файлу:webservices.zipРозмір:2243.88 КбДата модифікації:Fri Nov 11 20:14:08 2011Опис:

• Програма з графічним інтерфейсом, яка використовує простий веб-сервіс з додавання і віднімання цілих чисел. Для запуску розпакуйте зміст архіву у будь-яку директорію і запустіть на виконання файл WSLoader.jar. На машині має бути встановлено сервер програм GlassFish (його можна безкоштовно завантажити на сайті Oracle). Для більш детального опису програми див. інструкцію з використання.

• Завантажити. Натиснувши на завдання – завантажити,буде такий результат (рис.2.5):

 

Рис.2.5. Вихідні результати сайту

 

Механізми взаємодії з веб-сервісами. Середовище програмування Eclipse (а також інші середовища, призначені для роботи з мережевими прикладними програмами, такі як MS.NET) забезпечують можливість створення клієнтів для веб-сервісів на основі їхнього WSDL-опису. При цьому приховується більша частина чорнової роботи із забезпечення функціонування клієнту, наприклад, складання коректних SOAP-запитів та парсінг повернутих сервісом SOAP-повідомлень – ці дії виконуються клієнтською частиною технології Apache Axis. Для забезпечення роботи клієнта створюється 5 Java-файлів:

– локатор сервісу (service locator), який виконує знаходження веб-сервісу;

інтерфейс локатору;

– стаб для SOAP-прив’язки (SOAP binding stub) – клієнтський стаб, призначений для складання і парсінгу SOAP–повідомлень;

– інтерфейс сервісу;

– проксі-клас, який реалізує цей інтерфейс; використовує клієнтський стаб та локатор для доступу до операцій веб-сервісу.

Наприклад, для вищезгаданого сервісу MyService автоматично створені класи та інтерфейси будуть називатися MyServiceServiceLocator, MyServiceService, MyServiceSoapBindingStub, MyService, MyServiceProxy (в порядку їх опису вище). Звернення до операції MyService.someMethod буде виглядати подібним чином:

My Service svc = new MyServiceProxy ();

Try {

System.out.println (svc.someMethod(32.5, true));

} catch (Remote Exception e) {

System.err.println("Error occurred while accessing the web service");

e.printStackTrace();

}

Таким чином, проведено аналіз підходів до забезпечення взаємодії різнорідних програм і сучасних середовищ та наведені принципи взаємозв’язку різнорідних і різномовних програм через інтерфейс, в якому дається опис параметрів і типів даних для передачі іншим програмам. Розглянуті варіанти операцій звернення програм між собою. Дано зміст і призначення нового способу реалізації зв’язків між середовищами розробки Visual Studio та Eclipse на прикладі програм із компонентів, написаних на різних МП. Надані приклади підтверджують принцип об’єднання середовищ MS.Net і Eclipse.


Читайте також:

  1. Financial results of enterprise activity
  2. Kinds of activity enterprises
  3. Веб-сервіси і засоби опису
  4. Комп‘ютерний перекладач Socrat Personal Edition 3.03
  5. Приклад взаємодії Java і MS.NET через веб-сервіси
  6. Система планування ресурсів підприємства ( ERP – Enterprise Resource Planning ).




Переглядів: 851

<== попередня сторінка | наступна сторінка ==>
Сервіси WCF МS.NET з контрактами | Парадигми теоретичного програмування

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.039 сек.