Открыть сервис

Apache Axis

Apache Axis — это платформа с открытым исходным кодом для создания веб-сервисов на языке Java, реализующая спецификации SOAP (Simple Object Access Protocol) и WSDL (Web Services Description Language). Axis является частью экосистемы Apache Software Foundation и предоставляет инструменты для развертывания, публикации и вызова веб-сервисов, а также для генерации клиентского и серверного кода на основе описаний интерфейсов. Основное назначение Axis — упрощение взаимодействия между распределёнными приложениями через стандартизированные протоколы, независимо от используемых языков программирования и операционных систем.

История

Проект Axis был создан как преемник более ранней реализации SOAP от Apache — Apache SOAP (ранее известной как IBM SOAP4J). Первая версия Axis (Axis 1.0) была выпущена в 2002 году. Основной целью разработчиков было преодоление ограничений предшественника, таких как низкая производительность и сложность конфигурации. Axis 1.x быстро стал популярным благодаря своей модульной архитектуре и поддержке различных транспортов (HTTP, SMTP, JMS).

В 2006 году началась работа над Axis2, которая представляла собой кардинально переработанную версию. В отличие от Axis 1.x, Axis2 использовал новую объектную модель (AXIOM — Axis Object Model), основанную на потоковой обработке XML (StAX — Streaming API for XML), что значительно повысило производительность и снизило потребление памяти. Релиз Axis2 1.0 состоялся в 2007 году. Несмотря на появление Axis2, Axis 1.x продолжал поддерживаться до 2012 года, когда проект был объявлен устаревшим (end-of-life). Однако многие старые системы до сих пор используют Axis 1.x.

Архитектура и компоненты

Axis 1.x

Архитектура Axis 1.x базируется на конвейерной обработке сообщений. Основные компоненты включают:

  • Message Flow — последовательность обработчиков (handlers), которые могут модифицировать или анализировать SOAP-сообщение. Обработчики делятся на глобальные (применяются ко всем сообщениям) и локальные (привязаны к конкретному сервису).
  • Engine — центральный компонент, управляющий жизненным циклом сообщений и вызовом обработчиков.
  • Deployment Descriptor — файл конфигурации (обычно server-config.wsdd или client-config.wsdd), в котором описываются сервисы, обработчики, транспорты и другие настройки.
  • Transport — модуль, отвечающий за передачу сообщений по сети. Поддерживаются HTTP, SMTP, JMS и другие протоколы.

Axis2

Axis2 имеет более модульную и расширяемую архитектуру, основанную на следующих ключевых элементах:

  • AXIOM (Axis Object Model) — лёгкая объектная модель XML, использующая StAX для потоковой обработки. Это позволяет обрабатывать большие сообщения без загрузки всего документа в память.
  • Message Context — контекст выполнения, содержащий информацию о запросе, ответе, свойствах и состоянии обработки.
  • Phase — фаза обработки сообщения. Axis2 определяет предопределённые фазы (например, Transport, PreDispatch, Dispatch, PostDispatch), в которые можно вставлять обработчики.
  • Module — модуль, расширяющий функциональность Axis2. Например, модуль addressing реализует WS-Addressing, модуль securityWS-Security.
  • Service — описание веб-сервиса, включающее его интерфейс, реализацию и политики.

Поддержка стандартов

Apache Axis поддерживает ряд стандартов веб-сервисов, включая:

  • SOAP 1.1 и 1.2 — протокол обмена сообщениями на основе XML.
  • WSDL 1.1 и 2.0 — язык описания веб-сервисов. Axis включает инструменты для генерации WSDL из Java-классов и наоборот.
  • WS-I Basic Profile — набор рекомендаций по совместимости веб-сервисов. Axis 1.x соответствует профилю 1.0, Axis2 — профилю 1.1.
  • WS-Addressingстандарт для адресации сообщений (только Axis2 с соответствующим модулем).
  • WS-Security — стандарт для обеспечения безопасности сообщений (через модуль RamPart, который не является частью основного дистрибутива Axis2).

Инструменты и утилиты

Оба поколения Axis поставляются с набором утилит командной строки:

  • Java2WSDL — генерирует WSDL-описание на основе Java-класса или интерфейса.
  • WSDL2Java — генерирует Java-код (клиентские заглушки и серверные скелеты) на основе WSDL-документа.
  • AdminClient — утилита для управления развёрнутыми сервисами (например, для горячего развёртывания новых сервисов).
  • Axis2 Service Archiver — инструмент для создания файлов .aar (Axis2 Archive), которые содержат скомпилированные классы, конфигурации и зависимости.

Применение

Apache Axis широко использовался в корпоративных приложениях для интеграции систем, особенно в среде Java EE. Типичные сценарии применения:

  • Интеграция унаследованных систем — обёртывание существующих Java-приложений в веб-сервисы для взаимодействия с другими системами.
  • Создание SOAP-клиентов — генерация клиентского кода для вызова удалённых веб-сервисов, например, для интеграции с платёжными шлюзами, CRM-системами или государственными информационными системами.
  • Публикация API — предоставление доступа к бизнес-логике через стандартизированный SOAP-интерфейс.

В России Axis применялся, в частности, в системах электронного документооборота и банковских приложениях, где требовалась поддержка SOAP-протоколов. С переходом индустрии к RESTful-архитектурам и JSON популярность Axis снизилась, однако он остаётся востребованным в legacy-системах.

Критика и ограничения

Основные недостатки Apache Axis:

  • Сложность конфигурации — особенно в Axis 1.x, где требуется ручное редактирование XML-файлов конфигурации.
  • Производительность — Axis 1.x использует DOM-модель XML, что приводит к высокому потреблению памяти при обработке больших сообщений. Axis2 решает эту проблему, но всё ещё уступает более современным фреймворкам, таким как Apache CXF или Spring Web Services.
  • Отсутствие поддержки REST — Axis ориентирован исключительно на SOAP, что ограничивает его применение в современных веб-сервисах.
  • Устаревшая кодовая база — проект фактически не развивается с 2012 года, хотя сообщество выпускает редкие исправления безопасности.

Сравнение с альтернативами

ФреймворкЯзыкПоддержка SOAPПоддержка RESTСтатус
Apache Axis 1.xJavaДаНетУстаревший
Apache Axis2JavaДаЧастично (через модули)Поддерживается (редкие обновления)
Apache CXFJavaДаДаАктивно развивается
Spring Web ServicesJavaДаНетАктивно развивается
.NET WCFC#ДаДаАктивно развивается

Интересные факты

  • Название Axis не является аббревиатурой. Изначально проект назывался Apache SOAP, но после переработки архитектуры было выбрано новое имя, которое, по словам разработчиков, не имеет расшифровки.
  • Axis2 поддерживает не только Java, но и C++ (проект Axis2/C), хотя эта версия не получила широкого распространения.
  • В 2010-х годах на базе Axis2 был создан фреймворк Apache Rampart для реализации WS-Security, который позже был выделен в отдельный проект.

Источники

  1. Apache Axis Project Documentation — официальная документация Apache Software Foundation.
  2. "Java Web Services: Up and Running" by Martin Kalin (O'Reilly Media, 2009).
  3. "SOAP Web Services with Apache Axis2" — статья на сайте IBM DeveloperWorks (2007).
  4. "Web Services: Principles and Technology" by Michael P. Papazoglou (Pearson Education, 2008).
  5. Архив списков рассылки Apache Axis (2002–2012).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →