Рубрики
Без рубрики

Учебное пособие по веб-службам AXIS2

Учебник по Apache Axis2. Как создать веб-службы Axis2, развернуть и протестировать их с помощью программы-заглушки клиента axis2. Веб-сервисы Axis2 WSDL и SOAP.

Автор оригинала: Pankaj Kumar.

Добро пожаловать в учебник Apache Axis2. Недавно я пытался обновить свои навыки Apache Axis2 с версии 1.3 до последней версии 1.5.4, и мне не удалось найти ни одного учебника, который бы объяснял сам себя и охватывал последнюю версию. Таким образом, это составляет основу моего поста для руководства по веб-службам Axis2.

Учебник по Apache Axis2

Кому следует использовать этот Учебник?

Этот учебник предназначен для Java-программистов, которые заинтересованы в разработке и развертывании веб-сервисов с использованием Apache Axis2.

Предпосылки

В рамках этого руководства предлагается использовать Axis2 для создания веб-служб и вызова веб-службы с помощью клиентской программы Java и тестирования веб-службы с помощью инструмента Soap UI. Чтобы легко понять учебник, требуется базовое понимание Java, веб-служб, XML, Ant и сервера приложений (Tomcat).

Используемое программное обеспечение и инструменты

  1. Набор для разработки Java (JDK) 1.6.0 (для Tomcat 7 требуется минимальный JDK 1.6)
  2. Apache Ant 1.7.0 (для Axis2 требуется минимальная версия 1.6.5)
  3. Apache Axis2 1.5.4 (Двоичное распределение)
  4. Среда разработки Eclipse 3.6.1 для разработки проектов (вы также можете использовать другие среды разработки, например NetBeans)
  5. Apache Tomcat 7.0.8
  6. SoapUI для тестирования нашего веб-сервиса.
  7. Mac OS X 10.6.4 (я работаю над Mac OS, но учебник должен работать и для других операционных систем, однако при выполнении команд могут потребоваться некоторые изменения)

Настройка системы

  1. Скачайте последнюю версию Apache Tomcat последняя версия. На данный момент последняя версия-7.0.8, и это то, что я использую для этого урока. Для этого требуется минимальная версия Java 1.6, поэтому убедитесь, что она установлена в вашей системе. Если Java 6 не установлена в вашей системе, вам следует сначала загрузить и установить ее с Java SE Downloads . Загрузите zip-файл Tomcat Core (apache-tomcat-7.0.8.zip) и распакуйте его, чтобы установить в свою систему. Установите переменную среды JAVA_HOME для запуска и остановки сервера.
  2. Загрузите zip-файл двоичного дистрибутива Apache Axis2 1.5.4 из Apache Axis2 – Релизы . Этот шаг необходим для создания axis2.war, который будет развернут в tomcat, и для получения библиотек axis2 для использования в проектах.
  3. Распакуйте zip-файл двоичного дистрибутива Axis2 в любой удобный каталог. Перейдите в каталог axis2-1.5.4/webapp и выполните команду “ant create.war” , чтобы создать развертывание axis2.war в каталоге axis2-1.5.4/dist. Если у вас не установлен Apache Ant, вы можете загрузить и установить его с Apache Ant – Двоичные дистрибутивы . Пожалуйста, обратите внимание, что я столкнулся с некоторой проблемой с axis2.war, загруженной из дистрибутива War. Позже я узнал, что в дистрибутиве axis2 War отсутствует несколько банок. Дистрибутив War содержит только 58 банок, в то время как двоичный дистрибутив содержит 63 банки. (Мне лень выяснять, каких банок не хватает.)

  4. Разверните axis2.war на сервере приложений tomcat, скопировав его в каталог веб-приложений tomcat. Возможно, вам потребуется перезагрузить сервер, если он не поддерживает горячее развертывание.
  5. Перейти к https://localhost:8080/axis2/и нажмите на ссылку Проверить. Если страница HappyAxis поставляется с ЗЕЛЕНЫМ цветом, это означает, что axis2 успешно развернут. Теперь наша настройка системы готова, и мы можем приступить к созданию веб-сервисов Axis2.

Создание веб-службы Axis2

Для создания архива веб-службы Axis2 нам необходимо следующее:

  1. Проект Java (реализация Axis2 WS) с классом, который будет представлен в качестве веб – службы. В моем примере я показываю две операции из MyService класса. Первая операция getData ввод-строка и возвращает строку, тогда как вторая операция GetObjectData ввод-объект MyBean java и возвращает объект java MyBean после некоторой обработки данных. Обратите внимание, что мой класс Bean реализует сериализуемый интерфейс, чтобы его можно было передавать по сети.
  2. Муравей build.xml файл, который будет использоваться для создания классов заглушки и обработчика обратного вызова на стороне клиента, wsdl и.
  3. services.xml файл, который будет частью архива axis2. Этот файл будет помещен в папку META-INF архива axis2.

Структура проекта будет выглядеть так, как показано на рисунке ниже.

Не путайте с содержимым внутри папки сборки. Они будут созданы, когда мы выполним build.xml файл муравья.

Описание проекта веб-службы Axis2

MyService.java : Класс реализации, который будет представлен как веб-служба Axis2.

package com.journaldev.ws;

import com.journaldev.bean.MyBean;

public class MyService {

	public String getData(String input) {
		return "Hi" + input;
	}

	public MyBean getObjectData(MyBean myBean) {

		String name = myBean.getName();
		int id = myBean.getId();
		myBean.setId(id + 100);
		myBean.setName("Output: " + name);

		return myBean;
	}
}

MyBean.java : класс JavaBean, который является входом и выходом операции GetObjectData в веб-службе.

package com.journaldev.bean;

import java.io.Serializable;

public class MyBean implements Serializable {

	private static final long serialVersionUID = -1129402159048345204L;

	private String name;

	private int id;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

}

services.xml : Параметры, связанные с веб-службой Axis2, являются частью этого xml-файла. Параметр Service Class указывает класс, который будет отображаться как веб-служба. Другими важными параметрами являются Пространство имен и пространство имен схемы .

services.xml ||: Параметры, связанные с веб-службой Axis2, являются частью этого xml-файла. Параметр Service Class указывает класс, который будет отображаться как веб-служба. Другими важными параметрами являются || Пространство имен || и || пространство имен схемы || .


 
 MyService
 
 
 
 
 
 
 com.journaldev.ws.MyService

build.xml : Файл сборки Ant для выполнения задач Axis2. Определены три цели, детали которых:

  1. создать.wsdl : Этот целевой объект создает файл MyService.wsdl в папке сборки. Убедитесь, что целевое пространство и целевое пространство схемы такие же, как в service.xml файл.
  2. generate.service : Этот целевой объект создает архив axis2 в папке сборки. Она включает в себя services.xml файл в архиве и имя архива-MyService.aar
  3. generate.client : Этот целевой объект создает классы на стороне клиента. Убедитесь, что вы выполнили это после выполнения generate.wsdl, чтобы файл MyService.wsdl присутствовал в папке сборки.

generate.client ||: Этот целевой объект создает классы на стороне клиента. Убедитесь, что вы выполнили это после выполнения generate.wsdl, чтобы файл MyService.wsdl присутствовал в папке сборки.



 
 

 
 
 
 
 

 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 

 
 
 
 

 
 
 

Создание файлов WSDL, архива Axis и заглушек

  • Выполните команду generate.wsdl ant target для создания файла MyService.wsdl.
  • Выполните команду создать.service и цель для создания файла MyService.aar.
  • Выполните команду создать.цель муравья клиента для создания классов-заглушек.

Развертывание веб-службы Axis2

Скопируйте файл MyService.aar в каталог ~apache-tomcat-7.0.8/webapps/axis2/WEB-INF/services. Axis2 поддерживает горячее развертывание служб, поэтому вам не нужно перезапускать сервер. Проверьте развертывание службы на странице службы списков (https://localhost:8080/axis2/services/listServices). Моя служба должна быть указана там с двумя операциями.

Тестирование веб-службы Axis2

После развертывания сервиса, в первую очередь, нам нужно его протестировать. Здесь я использую SoapUI , который является одним из лучших инструментов для тестирования веб-сервисов. Если у вас его нет, вы можете скачать его с их веб-сайта и легко установить.

Шаги для тестирования с использованием SoapUI

  1. Создайте новый проект SoapUI с именем проекта MyServiceTest (вы можете указать любое имя, которое хотите) и начальным WSDL/WADL https://localhost:8080/axis2/services/MyService?wsdl (Вы можете получить этот URL-адрес со страницы служб списка Axis2, перейдя по ссылке MyService.). Оставьте другие параметры со значением по умолчанию и нажмите кнопку ОК, чтобы создать проект тестирования SoapUI.
  2. Возьмите любую из привязок Soap и дважды щелкните запросы getData и GetObjectData SOAP.
  3. Укажите некоторые значения для ввода в запросе и отправьте его по URL конечной точки веб-службы. Вы должны получить вывод из сервиса, аналогичный изображению ниже. Это подтверждает, что наш веб-сервис запущен и работает.

Теперь мы перейдем к последней задаче вызова веб-службы с использованием классов заглушек Axis2.

Вызов веб-службы Axis2 с использованием файлов-заглушек

  1. Создайте проект Java Клиент Axis2 в Eclipse.
  2. Создайте папку библиотеки и скопируйте все файлы Axis2 из загруженной папки библиотеки двоичного дистрибутива. Добавьте эти банки в путь сборки проекта.
  3. Копия, сгенерированная ранее MyServiceStub.java и MyServiceCallbackHandler.java в проекте src с правильной структурой пакета. В моем случае я скопировал их в пакет com.journaldev. Если вам нужно предоставить эти классы кому-то другому, я настоятельно рекомендую создать из них банку, а затем распространить ее среди других, чтобы избежать каких-либо изменений.
  4. Создайте клиент Axis2, Используя Заглушки Из Любого класса client, чтобы вызвать операции веб-службы. Структура проекта будет выглядеть так же, как показано на рисунке ниже.

Клиент Axis2, Использующий Заглушки Из Кода Ant

package com.journaldev.ws.client;

import java.rmi.RemoteException;

import com.journaldev.MyServiceStub;
import com.journaldev.MyServiceStub.GetData;
import com.journaldev.MyServiceStub.GetDataResponse;
import com.journaldev.MyServiceStub.GetObjectData;
import com.journaldev.MyServiceStub.GetObjectDataResponse;
import com.journaldev.MyServiceStub.MyBean;

/**
 *
 * @author Pankaj - www.journaldev.com This class will invoke Axis2 web service
 *         operations using Stub classes
 *
 */
public class Axis2ClientUsingStubsFromAnt {

	/**
	 * END_POINT is the web service endpoint
	 */
	private final static String END_POINT = "https://localhost:8080/axis2/services/MyService";

	public static void main(String[] args) throws RemoteException {
		System.out.println("START");

		// Create the Stub Object by passing the Web Service Endpoint URL
		MyServiceStub stub = new MyServiceStub(END_POINT);

		// Creating an input object for the getData operation
		GetData getDataInput = new GetData();

		// Setting the input part in the getData input object
		getDataInput.setInput("PANKAJ");

		// invoking the getData operation
		GetDataResponse getDataOutput = stub.getData(getDataInput);

		// get_return method returns the web service output object. Here its
		// String, so we can
		// directly print the returned value
		System.out.println("Output:" + getDataOutput.get_return());

		// Creating input object for the getObjectData operation
		GetObjectData getObjectDataInput = new GetObjectData();
		MyBean myBean = new MyBean();
		myBean.setId(1);
		myBean.setName("KUMAR");

		// Setting the input part in the getObjectData input object
		getObjectDataInput.setMyBean(myBean);

		// invoking the getObjectData operation
		GetObjectDataResponse getObjectDataOutput = stub
				.getObjectData(getObjectDataInput);

		// Get the MyBean object from the response object
		MyBean myBeanOutput = getObjectDataOutput.get_return();

		// Print the myBeanOutput values to check that web service operations
		// are getting invoked
		System.out.println("ID:" + myBeanOutput.getId() + "NAME:"
				+ myBeanOutput.getName());

		System.out.println("DONE");

	}

}

Выполните клиент Axis2, Используя заглушки из класса И для вызова веб – службы. Результатом работы вышеуказанной программы является:

START
log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
log4j:WARN Please initialize the log4j system properly.
Output:HiPANKAJ
ID:101NAME:Output: KUMAR
DONE

Если вы считаете, что учебник полезен для понимания Axis2 и начала работы с ним, пожалуйста, поделитесь своими мыслями в разделе комментариев.

И да, не забудьте поделиться этим с другими.

Ваши два клика и 5 секунд времени могут помочь кому-то другому легко освоить Axis2. 🙂