Вступление
Веб-сервисы приобрели огромную популярность и широкое распространение. Поскольку в разработке и развертывании веб-сервисов много мистики, важно использовать правильные инструменты, которые повышают производительность труда разработчиков и скрывают сложность деталей разработки и развертывания, позволяя разработчикам сосредоточиться на логике реализации. Существует несколько платформ SOAP, которые помогают создавать веб-сервисы. В этом обсуждении основное внимание будет уделено мыльному стеку Apache AXIS2. AXIS2 — это новое поколение мыльного движка из стабильной версии Apache после Apache Soap и Apache AXIS1.
AXIS2 представляет собой полный пересмотр своих предшественников и имеет несколько улучшений с точки зрения производительности и масштабируемости. AXIS2 при использовании в сочетании с инструментами разработки Eclipse обеспечивает отличное время разработки и платформы времени выполнения, которые способствуют быстрой разработке веб-служб. В этой статье рассматриваются эти инструменты и как они используются для быстрой разработки веб-сервисов. Эта статья является пошаговой иллюстрацией к разработке и развертыванию веб-сервисов с использованием AXIS2 и Eclipse IDE и связанных с ними плагинов.
Обзор инструментов
В этом упражнении мы используем следующие инструменты и среды выполнения.
- Java 1.6
- AXIS2 версия 1.4
- Затмение 3.2.x
- Tomcat 4.1
- Подключаемый модуль Apache AXIS2 Service Archiver Wizard
- Подключаемый модуль мастера создания кода Apache AXIS2
Установка AXIS2
Чтобы установить AXIS2, поместите файл axis2.war из дистрибутива AXIS2 в папку «webapps» дистрибутива tomcat. Если вы установили tomcat на диск «C:», поместите axis2.war в «c: \ tomcat \ webapps». Перезагрузите кота. Чтобы убедиться, что установка AXIS2 прошла успешно, попробуйте загрузить страницу «HappyAxis»: http: // localhost: 8080 / axis2 / axis2-web / HappyAxis.jsp
Также разархивируйте дистрибутив AXIS2 на диск «C:».
Eclipse Plugin установка
После загрузки бинарного дистрибутива Service Archiver, Code Generator, разархивируйте оба файла в каталог ‘plugins’ установки eclipse. Если вы установили eclipse на диск «C:», разархивированное содержимое будет помещено в папку «c: \ eclipse \ plugins».
Шаги по разработке веб-сервиса
Теперь, когда установлены платформы времени выполнения и времени разработки, мы можем начать разработку веб-сервисов. Разработка веб-сервисов может осуществляться двумя способами.
- Развитие сверху вниз
- Развитие снизу вверх
В этой статье я объясню «развитие сверху вниз». В методе «сверху вниз» мы начинаем с документа WSDL в качестве отправной точки. Я буду использовать следующий WSDL для целей моего упражнения.
<definitions targetNamespace="http://example.org/math/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:ns="http://example.org/math/types/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:y="http://example.org/math/">
<types>
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="unqualified"
targetNamespace="http://example.org/math/types/"
xmlns="http://example.org/math/types/">
<xs:complexType name="MathInput">
<xs:sequence>
<xs:element name="x" type="xs:double" />
<xs:element name="y" type="xs:double" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="MathOutput">
<xs:sequence>
<xs:element name="result" type="xs:double" />
</xs:sequence>
</xs:complexType>
<xs:element name="Add" type="MathInput" />
<xs:element name="AddResponse" type="MathOutput" />
</xs:schema>
</types>
<message name="AddMessage">
<part name="parameters" element="ns:Add" />
</message>
<message name="AddResponseMessage">
<part name="parameters" element="ns:AddResponse" />
</message>
<portType name="MathInterface">
<operation name="Add">
<input message="y:AddMessage" />
<output message="y:AddResponseMessage" />
</operation>
</portType>
<binding name="MathSoapHttpBinding" type="y:MathInterface">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Add">
<soap:operation soapAction="http://example.org/math/Add"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="MathService">
<port name="MathEndpoint" binding="y:MathSoapHttpBinding">
<soap:address location="http://localhost:8080/axis2/services/MathService" />
</port>
</service>
</definitions>
Поместите MathService.wsdl в папку «WSDL».
Следующим шагом является создание кода на стороне сервера. Нажмите Ctrl + N. Мы получаем следующий экран.
Выберите генератор кода Axis2. Появится следующее окно.
Выберите первый вариант. Нажмите «Далее.
Укажите точное местоположение файла WSDL. Нажмите «Далее.
Выберите параметр «Пользовательский», «Создать код на стороне сервера» и файл по умолчанию Services.xml. Нажмите Next, чтобы получить следующее окно.
Выберите «Обзор и выберите проект в текущей рабочей области Eclipse». Выберите проект MathService из появившегося окна. Нажмите Ok и выберите «Добавить библиотеки Axis2». Нажмите Готово.
Обновите папки проекта. Вы найдете папку «lib» и папку «resources».
Добавьте файлы jar из папки ‘lib’ в путь сборки и скомпилируйте сгенерированный код.
Теперь измените код скелета [в нашем случае org.example.math.MathServiceSkeleton.java], чтобы включить логику реализации, как показано ниже:
public org.example.math.types.AddResponse Add(org.example.math.types.Add add) {
AddResponse response = new AddResponse();
MathOutput output = new MathOutput();
double x = add.getAdd().getX();
double y = add.getAdd().getY();
output.setResult(x+y);
response.setAddResponse(output);
return response;
}
Снова перестройте проект [Project-> Clean].
Архив Сервис
После того, как исходный код сгенерирован и services.xml [в папке ресурсов], пришло время архивировать сервис. Это делается с помощью мастера Service Archiver. В проекте eclipse нажмите Ctrl + N. После выбора мастера Service Archiver укажите точное местоположение файла класса в следующем окне. Выберите опцию «Включить только файлы .class».
Нажмите Next. Мы получим следующее окно. Выберите опцию «Выбрать WSDL». И нажмите Далее.
В следующем окне нажмите Далее.
В появившемся окне укажите ссылку на «services.xml», как показано ниже. Нажмите «Далее.
В появившемся окне укажите выходное местоположение для сгенерированного архива. Нажмите Готово.
Это приводит к следующему окну.
В папке сборки вы можете увидеть, что файл MathService.jar создан. Переименуйте его в MathService.aar. Удалите архив в папку <TOMCAT_HOME> \ webapps \ axis2 \ WEB-INF \ services. Чтобы убедиться, что служба развернута правильно, перезапустите сервер Tomcat.
Откройте URL-адрес http: // localhost: 8080 / axis / services / listServices, чтобы увидеть развернутую службу. На этой странице должен отображаться статус услуги «Активен».
Напишите код клиента
Теперь, когда сервис развернут, нам нужно сгенерировать клиент, который обращается к сервису. Это генерируется мастером генерации кода. В проекте нажмите «Ctrl + N». Выберите «Генератор кода Axis2». В появившемся окне выберите первый вариант.
Нажмите «Далее.
В появившемся окне укажите точное местоположение файла ‘wsdl’.
Нажмите «Далее.
В появившемся окне сохраните параметры по умолчанию и нажмите Далее. После нажатия Next, появится следующее окно. Укажите место, где будет размещен код клиента, как показано ниже.
Примечание: на этот раз не выбирайте опцию «Добавить банки кодов AXIS2».
При нажатии Готово появляется следующее окно.
При обновлении папки ‘src’ вы можете увидеть код на стороне клиента в форме MathServiceStub.java и MathServiceCallbackHandler.java.
Напишите код клиента вокруг заглушек, сгенерированных на предыдущем шаге, как показано ниже. Есть два типа клиентов. Синхронный / блокирующий клиент. Асинхронный / неблокирующий клиент. Сначала мы обсудим синхронный клиент.
>> код 2
Выполнить клиент. При успешном выполнении вы увидите следующий вывод в консоли Eclipse.
Если вы помните, при создании клиентских заглушек мы выбрали генерацию синхронных и асинхронных клиентов. Чтобы написать асинхронный клиент, нам нужно написать класс CallBack и зарегистрировать клиента в этом классе. Давайте напишем класс обратного вызова.
package org.example.math;
import org.example.math.MathServiceStub.AddResponse;
public class CallBack extends MathServiceCallbackHandler {
private boolean complete = false;
public void receiveResultAdd(AddResponse result) {
System.out.println("Result in Callback " + result.getAddResponse().getResult());
complete = true;
}
public boolean isComplete() {
return complete
}
}
Давайте напишем клиент, который использует вышеупомянутый класс обратного вызова.
public static void main(String[] args)
MathServiceStub stub
try {
stub = new MathServiceStub("http://localhost:8080/axis2/services/mathService");
MathServiceStub.Add add = MathServiceStub.Add();
MathServiceStub.MathInput input = new MathServiceStub.MathInput();
input.setX(3);
input.setY(5)
add.setAdd(input);
CallBack cb = new CallBack();
stub.startAdd(add, cb);
while(!cb.isComplete()) {
System.out.println("Do Something");
}
} catch (AxisFault e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
При выполнении вышеупомянутого клиента вы должны увидеть следующий вывод. Вывод «Do Something» указывает на то, что клиент не ожидал ответа от сервера.
Вывод
Веб-сервисы — это ключевая технология на пути к сервис-ориентированным архитектурам. Они также играют важную роль в компьютерной парадигме Web 3.0. Apache AXIS2 является превосходной платформой SOAP и при использовании вместе с Eclipse IDE, AXIS2 Code Generator и плагинами Service Archiver значительно упрощает процесс разработки и развертывания веб-сервисов. Это повышает производительность труда разработчиков, автоматизируя задачи и скрывая некоторые сложности, связанные с разработкой и развертыванием.
Рекомендации
- Устанавливается Tomcat [ http://tomcat.apache.org ]
- AXIS 2 Framework [ http://ws.apache.org/axis2 ]
- Eclipse IDE [ http://www.eclipse.org/downloads ]
- Плагин Aclis2 Code Generator для Eclipse
- Подключаемый модуль Eclipse AXIS2 Service Archiver [ http://ws.apache.org/axis2/tools/index.html ]
об авторе
имеет более чем 10-летний опыт разработки программного обеспечения с использованием Java, J2EE, технологий интеграции на основе обмена сообщениями. Он также является сертифицированным корпоративным архитектором Sun и разработчиком Java.