Автор оригинала: 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).
Используемое программное обеспечение и инструменты
- Набор для разработки Java (JDK) 1.6.0 (для Tomcat 7 требуется минимальный JDK 1.6)
- Apache Ant 1.7.0 (для Axis2 требуется минимальная версия 1.6.5)
- Apache Axis2 1.5.4 (Двоичное распределение)
- Среда разработки Eclipse 3.6.1 для разработки проектов (вы также можете использовать другие среды разработки, например NetBeans)
- Apache Tomcat 7.0.8
- SoapUI для тестирования нашего веб-сервиса.
- Mac OS X 10.6.4 (я работаю над Mac OS, но учебник должен работать и для других операционных систем, однако при выполнении команд могут потребоваться некоторые изменения)
Настройка системы
- Скачайте последнюю версию Apache Tomcat последняя версия. На данный момент последняя версия-7.0.8, и это то, что я использую для этого урока. Для этого требуется минимальная версия Java 1.6, поэтому убедитесь, что она установлена в вашей системе. Если Java 6 не установлена в вашей системе, вам следует сначала загрузить и установить ее с Java SE Downloads . Загрузите zip-файл Tomcat Core (apache-tomcat-7.0.8.zip) и распакуйте его, чтобы установить в свою систему. Установите переменную среды JAVA_HOME для запуска и остановки сервера.
- Загрузите zip-файл двоичного дистрибутива Apache Axis2 1.5.4 из Apache Axis2 – Релизы . Этот шаг необходим для создания axis2.war, который будет развернут в tomcat, и для получения библиотек axis2 для использования в проектах.
Распакуйте 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 банки. (Мне лень выяснять, каких банок не хватает.)
- Разверните axis2.war на сервере приложений tomcat, скопировав его в каталог веб-приложений tomcat. Возможно, вам потребуется перезагрузить сервер, если он не поддерживает горячее развертывание.
- Перейти к https://localhost:8080/axis2/и нажмите на ссылку Проверить. Если страница HappyAxis поставляется с ЗЕЛЕНЫМ цветом, это означает, что axis2 успешно развернут. Теперь наша настройка системы готова, и мы можем приступить к созданию веб-сервисов Axis2.
Создание веб-службы Axis2
Для создания архива веб-службы Axis2 нам необходимо следующее:
- Проект Java (реализация Axis2 WS) с классом, который будет представлен в качестве веб – службы. В моем примере я показываю две операции из MyService класса. Первая операция getData ввод-строка и возвращает строку, тогда как вторая операция GetObjectData ввод-объект MyBean java и возвращает объект java MyBean после некоторой обработки данных. Обратите внимание, что мой класс Bean реализует сериализуемый интерфейс, чтобы его можно было передавать по сети.
- Муравей build.xml файл, который будет использоваться для создания классов заглушки и обработчика обратного вызова на стороне клиента, wsdl и.
- 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. Определены три цели, детали которых:
- создать.wsdl : Этот целевой объект создает файл MyService.wsdl в папке сборки. Убедитесь, что целевое пространство и целевое пространство схемы такие же, как в service.xml файл.
- generate.service : Этот целевой объект создает архив axis2 в папке сборки. Она включает в себя services.xml файл в архиве и имя архива-MyService.aar
- 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
- Создайте новый проект SoapUI с именем проекта MyServiceTest (вы можете указать любое имя, которое хотите) и начальным WSDL/WADL https://localhost:8080/axis2/services/MyService?wsdl (Вы можете получить этот URL-адрес со страницы служб списка Axis2, перейдя по ссылке MyService.). Оставьте другие параметры со значением по умолчанию и нажмите кнопку ОК, чтобы создать проект тестирования SoapUI.
- Возьмите любую из привязок Soap и дважды щелкните запросы getData и GetObjectData SOAP.
- Укажите некоторые значения для ввода в запросе и отправьте его по URL конечной точки веб-службы. Вы должны получить вывод из сервиса, аналогичный изображению ниже. Это подтверждает, что наш веб-сервис запущен и работает.
Теперь мы перейдем к последней задаче вызова веб-службы с использованием классов заглушек Axis2.
Вызов веб-службы Axis2 с использованием файлов-заглушек
- Создайте проект Java Клиент Axis2 в Eclipse.
- Создайте папку библиотеки и скопируйте все файлы Axis2 из загруженной папки библиотеки двоичного дистрибутива. Добавьте эти банки в путь сборки проекта.
- Копия, сгенерированная ранее MyServiceStub.java и MyServiceCallbackHandler.java в проекте src с правильной структурой пакета. В моем случае я скопировал их в пакет com.journaldev. Если вам нужно предоставить эти классы кому-то другому, я настоятельно рекомендую создать из них банку, а затем распространить ее среди других, чтобы избежать каких-либо изменений.
- Создайте клиент 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. 🙂