Главная » Java, Web, XML » Язык WS-lnspection для поиска Web-служб

0

Системы UDDI и ebXML решают не только задачу поиска Web-службы, но и задачи их описания, изменения, интеграции. Это усложняет ведение реестра и поиск в нем нужной Web-службы. Если же нужно только отыскать данную Web-службу на конкретном сайте, то лучше воспользоваться другими средствами поиска.

Одно такое средство поиска — WS-lnspection — создано фирмами IBM и Microsoft в 2001 году. Одной из целей создания нового средства было предельное упрощение поиска Web-службы на Web-сайте. При помощи WS- lnspection эта задача решается так: составляется описание Web-службы на специально разработанном языке WSIL (WS-lnspection Language) — еще одной    XML. Оно записывается в файл с расширением и заносится в определенный каталог сервера приложений. Сервер, получив запрос, просматривает все файлы с расширением wsil и находит запрошенную Web-службу.

Описание Web-службы на языке WSIL выполняется всего одним документом XML с корневым элементом <inspection>, содержащим несколько вложенных элементов.

В корневой элемент <inspection> вкладывается необязательное краткое описание Web-службы <abstract>, служащее комментарием, и одно или несколько описаний Web-услуг < service > и/или одна или несколько ссылок на описания    В документе обязательно должен присутствовать ХСЯЯ бы ОДИН Элемент <service> ИЛИ <link>.

В элементе <service> тоже может быть краткое описание Web-услуги <abstract>, одно или несколько имен <name> и обязательно одно или несколько описаний <description>, в которых необязательным атрибутом location задаются    документов XML, содержащих описание Web-службы. Описание обычно выполняется на языке WSDL, но может быть сделано и на другом языке. Пространство имен описания задается вторым атрибутом элемента <description> — атрибутом referencedNamespace.

В элемент <description> можно вложить описание <abstract>, служащее комментарием, и один произвольный элемент с дополнительным описанием. В этом описании может быть адрес Web-службы — в таком случае оно заменит значение атрибута location.

Элемент <link> внешне отличается от элемента <service> тем, что в нем нет описания <description>, а атрибуты ref erencedNamespace И location

относятся непосредственно к элементу <link>. Эти атрибуты описывают пространство имен и адрес другого WSIL-Описания или хранилища UDDI. Вместо атрибута location можно записать вложенный элемент, в котором указать ссылку на другое описание.

Итак, WSIL-описание строится по следующей схеме:

•«inspection

xmlns="http: //schemas . xmlsoap. org/ws/2001/10/inspection/"> описание

<service>

описание

<пате>Произвольное имя услуги</пате>

<description referencedNamespace="aflpec URI" location="aflpec URI">

<abstract>KpaTKoe onMcaHne</abstract>

<!— дополнительное описание — >

</description>

</service>

<link referencedNamespace="aflpec URI" location="a,npec URI">

<abstract>KpaTKoe onncaHne</abstract>

<!— дополнительное описание — >

</link>

</inspection>

В листинге 2.8 показано, как просто выглядит WSIL-описание нашей метеослужбы.

р Листинг 2.8. Описание WSIL метеослужбы                                                    •

<?xml version="1.0"?>

<inspection

xmlns="http://schemas.xmlsoap.org/ws/2001/10/inspection/">

<service>

<name>MeteoService</name>

<description

referencedNamespace="http://schemas.xmlsoap.org/wsdl/" location="http://www.meteo.com/wsdl/MeteoService.wsdl" />

</service>

</inspection>

После того как WSDL-описание сделано, его надо записать в файл с именем, например, MeteoService.wsil, а файл поместить в определенный каталог сервера приложений. Если обратиться к серверу с браузера со стороны клиента, например, так:

то браузер покажет список всех Web-служб, имеющихся на сервере. Спецификация WS-Inspection предписывает, чтобы в корневом каталоге сайта, реализующего WS-Inspection, располагался или создавался динамически файл inspection.wsil. Вы можете набрать в браузере, например, адрес фирмы IBM http://www.ibm.com/inspection.wsil или адрес http://www.xmethods.com/ inspection.wsil и получить список всех Web-служб, зарегистрированных на этом сайте. При этом файла inspection.wsil на сервере нет, он создается динамически по запросу клиента.

Разумеется, сервер приложений должен "понимать" WS-Inspection. Для этого на нем должна быть сделана реализация спецификации WS-Inspection, например, установлен пакет интерфейсов и классов WSIL4J, входящий в состав IBM WSTK.

В пакете WSIL4J разработаны Java-интерфейсы WS-Inspection и сделана их реализация классами Java. Основную работу на сервере выполняет сервлет Он просматривает все файлы с расширением имени и отправляет их содержимое клиенту.

Если у Web-службы нет WSIL-описания, то сервлет создает его динамически.

У клиента работает класс wsiLProxy. Он запрашивает wsibservlet, читает полученные от него     и выбирает ссылку на описание

WSDL или другое, какое там есть, описание нужной Web-службы. После этого можно обратиться к найденной Web-службе.

В листинге 2.9 приведен пример поиска нашей метеослужбы посредством WS-lnspection и пакета WSIL4J. Программа просто выводит полученные от сервера описания метеослужбы.

Листинг 2.9. Поиск метеослужбы с помощью WS-lnspection

import com.ibm.wsil.*; import com. ibm.wsil.client.*;

import import

public class MeteoWSInspection{

public static void main (String [ ] args) {

if (args.length< 2){ System.err.println(

"Usage: MeteoWSInspection <URL> <serviceName>" ) ; System.exit(1);

}

try{

WSILProxy proxy = new WSILProxy(args[0]);

WSDLDocument[] wsdlDocs =

proxy.getWSDLDocumentByServiceName(args[1]);

for (int k = 0; k < wsdlDocs.length; k++)

System.out.println(wsdlDocs[k].serializeToXML());

}catch(Exception e){

System.err.println(e);

}

}

}

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии