Какой минимальный путь к классам для клиента Axis2?

Я хочу создать клиент Axis2 (я получаю доступ только к удаленной веб-службе, я использую нет!) С Maven2, и я не хочу добавлять 21 МБ JAR в свой проект. Что мне нужно поместить в свой pom.xml для компиляции кода, когда я преобразовал WSDL с помощью ADB?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
32
0
33 672
9
Перейти к ответу Данный вопрос помечен как решенный

Ответы 9

Ответ принят как подходящий

(Примечание: Этот ответ был предоставлен самим Аароном Дигуллой. Далее следует точный текст его собственного ответа.)

В maven2 минимальная установленная зависимость для работы клиента ADB («ADB», как в том способе, которым вы создавали классы Java из WSDL), следующая:

    <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-kernel</artifactId>
            <version>1.4.1</version>
    </dependency>
    <dependency>
            <groupId>org.apache.axis2</groupId>
            <artifactId>axis2-adb</artifactId>
            <version>1.4.1</version>
    </dependency>

Хммм ... кажется, я не могу отметить это как правильный ответ. Кто-нибудь может скопировать это, чтобы я пометил его сообщение?

в новых версиях Axis2 упомянутых зависимостей недостаточно, см. ответ Рено ниже

Martin Dürrmeier 14.06.2011 13:05

Если ваш клиент работает на Java 6, рассмотрите возможность использования JAX-WS для использования WS. JAX-WS использует стандарт JAXB для привязки, и вам не нужна ни одна дополнительная банка для клиента.

Я подумаю об этом, когда наши производственные серверы перейдут на Java 6, что должно произойти в течение следующего десятилетия или около того ...;)

Aaron Digulla 02.12.2008 16:12

Фактически, вам нужна только зависимость ось-abd, поскольку ось2-ядро является подчиненной зависимостью ось-abd. Поэтому вы можете резюмировать это следующим образом:

<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-adb</artifactId>
    <version>1.5.1</version>
</dependency>

Обратите внимание, однако, что лучшие практики Maven говорят, что если вы используете что-либо из axis2-kernel в своем коде, вы должны объявить это явно. Так вы не столкнетесь с неожиданным сюрпризом позже, когда удалите adb. (Конечно, ядро ​​всегда должно быть включено, по крайней мере, вы так думаете)

Mike Cornell 30.12.2009 23:30

В Axis2 версии 1.5.1 модули maven, похоже, были реструктурированы.

Мои сценарии Groovy (с использованием привязки ADB) имеют следующие зависимости:

@Grapes([
    @Grab(group='org.apache.axis2', module='axis2-kernel', version='1.5.1'),
    @Grab(group='org.apache.axis2', module='axis2-adb', version='1.5.1'),
    @Grab(group='org.apache.axis2', module='axis2-transport-local', version='1.5.1'),
    @Grab(group='org.apache.axis2', module='axis2-transport-http', version='1.5.1'),
])

В этом есть своя логика. Я мог бы использовать альтернативную структуру привязки при создании своей заглушки или мог бы использовать альтернативный транспортный протокол для HTTP.

Пример кода в этом отвечать

Минимальные банки для клиента:

  • активация-1.1.jar
  • аксиома-api-1.2.8.jar
  • аксиома-имп-1.2.8.jar
  • ось2-adb-1.5.1.jar
  • ось2-ядро-1.5.1.jar
  • ось2-транспорт-http-1.5.1.jar
  • ось2-транспорт-местный-1.5.1.jar
  • Обще-кодек-1.3.jar
  • Commons-httpclient-3.1.jar
  • Commons-logging-1.1.1.jar
  • httpcore-4.0.jar
  • mail-1.4.jar
  • neethi-2.0.4.jar
  • wsdl4j-1.6.2.jar
  • XmlSchema-1.4.3.jar

Приведенные ниже файлы STAX не являются частью выпуска Axis2 1.5.1 и потребуются, если ваша версия JDK меньше 6:

  • stax-1.2.0.jar
  • stax-api-1.0.1.jar

Очень полный список. Именно то, что мне нужно, чтобы заставить Axis2 работать на моем сервере приложений Websphere v8.5

Roberto Linares 02.08.2014 00:10

Пришлось добавить и транспорты

<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-adb</artifactId>
    <version>1.5.4</version>
</dependency>
<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-transport-local</artifactId>
    <version>1.5.4</version>
</dependency>
<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-transport-http</artifactId>
    <version>1.5.4</version>
</dependency>

+1, да, в новых версиях Axis2 некоторые классы больше не находятся в ядре axis2, например. LocalTransportSender, CommonsHTTPTransportSender

Martin Dürrmeier 14.06.2011 12:58

Мне также удалось избавиться от axis2-transport-local, но это может быть только потому, что я программно настраиваю Axis.

Chris H. 11.02.2015 04:21

Axis2 версии 1.6.2 не работал бы для меня без ось2-xmlbeans (хотя это может иметь какое-то отношение к тому факту, что я также использую плагин axis2-wsdl2code-maven-плагин и xmlbeans в качестве инфраструктуры привязки данных). У меня есть следующий ПОМ:

    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-kernel</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-adb</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-http</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-transport-local</artifactId>
        <version>1.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.axis2</groupId>
        <artifactId>axis2-xmlbeans</artifactId>
        <version>1.6.2</version>
    </dependency>

Я считаю, что вам могут понадобиться библиотеки XML Beans, только если вы используете опцию -d xmlbeans при генерации классов Java из файла WSDL, и тогда вам не понадобится зависимость axis2-adb. См .: axis.apache.org/axis2/java/core/docs/…

Stephen Ostermiller 20.01.2014 19:08

Для тех, кто использует Gradle, здесь я исключаю ненужные библиотеки:

dependencies {

    ext.compileEx = { lib, exModules, exGroups ->
        compile (lib) {
            exModules.each { exclude module : "$it" }
            exGroups.each  { exclude group: "$it" }
        }
    }

    List axisExModules = [ 'axiom-compat', 'jaxen', 'apache-mime4j-core' ]
    List axisExGroups  = [ 'javax.servlet', 'commons-fileupload', 'org.apache.woden',
                           'javax.ws.rs', 'org.apache.geronimo.specs', 'org.codehaus.woodstox' ]
    compileEx ('org.apache.axis2:axis2-adb:1.6.3', axisExModules, axisExGroups)
    compileEx ('org.apache.axis2:axis2-transport-local:1.6.3', axisExModules, axisExGroups)
    compileEx ('org.apache.axis2:axis2-transport-http:1.6.3', axisExModules, axisExGroups)

}

Здесь - это мой оригинальный пост на форумах Gradle.

В итоге минимальная зависимость для работающего клиента


  • аксиома-api-1.2.14.jar
  • аксиома-имп-1.2.14.jar
  • ось2-adb-1.6.3.jar
  • ось2-ядро-1.6.3.jar
  • ось2-транспорт-http-1.6.3.jar
  • ось2-транспорт-местный-1.6.3.jar
  • Обще-кодек-1.3.jar
  • Commons-httpclient-3.1.jar
  • Commons-logging-1.1.1.jar
  • httpcore-4.0.jar
  • mail-1.4.jar
  • neethi-3.0.2.jar
  • wsdl4j-1.6.2.jar
  • XmlSchema-1.4.7.jar

Ниже перечислены минимальные зависимости с подробностями.

клиентская заглушка использует класс ServiceClient, сгенерированный с помощью инструмента% AXIS2_HOME% \ bin \ WSDL2Java для данного WSDL (для создания вам потребуются все jar-файлы оси в пути к классам, что проще всего достигается путем установки AXIS_HOME)

Классы, требуемые для клиентской заглушки во время СОСТАВИТЬ


  • axiom-api-1.2.14.jar - требуется во время компиляции клиентской заглушкой для org.apache.axiom.om.OMElement, org.apache.axiom.soap.SOAPEnvelope, org.apache.axiom.soap.SOAPFactory, org .apache.axiom.om.OMПространство имен
  • axis2-adb-1.6.3.jar - требуется во время компиляции клиентской заглушкой для org.apache.axis2.databinding.ADBException
  • axis2-kernel-1.6.3.jar - требуется во время компиляции клиентской заглушкой для класса org.apache.axis2.AxisFault

Классы, необходимые для успешного вызова клиентской заглушки во время БЕГ

  • axiom-impl-1.2.14.jar (без этого org.apache.axiom.om.OMException: метафабрика не найдена для функции default; это обычно означает, что axiom-impl.jar отсутствует в пути к классам)
  • axis2-transport-http-1.6.3.jar (без этого org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.http.CommonsHTTPTransportSender)
  • axis2-transport-local-1.6.3.jar (без этого org.apache.axis2.deployment.DeploymentException: org.apache.axis2.transport.local.LocalTransportSender)
  • commons-codec-1.3.jar (без этого java.lang.NoClassDefFoundError: org / apache / commons / codec / DecoderException)
  • commons-httpclient-3.1.jar (без этого org.apache.axis2.deployment.DeploymentException: org / apache / commons / httpclient / HttpException)
  • commons-logging-1.1.1.jar (без этого java.lang.NoClassDefFoundError: org / apache / commons / logging / LogFactory)
  • httpcore-4.0.jar (без этого java.lang.NoClassDefFoundError: org / apache / http / HttpResponseFactory)
  • mail-1.4.jar (без этого java.lang.NoClassDefFoundError: javax / mail / internet / ParseException)
  • neethi-3.0.2.jar (без этого java.lang.NoClassDefFoundError: org / apache / neethi / PolicyComponent)
  • wsdl4j-1.6.2.jar (без этого java.lang.NoClassDefFoundError: javax / wsdl / WSDLException)
  • XmlSchema-1.4.7.jar (без этого java.lang.ClassNotFoundException: org / apache / ws / commons / schema / XmlSchema)

org.apache.axis2.AxisFault: в соединении отказано: соединение -> ОШИБКА ТОЛЬКО, если веб-служба не работает или недоступна по какой-либо другой причине

Обратите внимание на точную версию (и), однако поведение будет достаточно общим с учетом изменений упаковки в версии, следовательно, упомянутые выше FQCN -

Версия оси - 1.6.3

Версия Tomcat - Apache Tomcat / 7.0.64

Версия сервлета - 3.0

java.runtime.version - 1.7.0_79-b15

Спасибо. Это именно то, что я искал.

Anupam Srivastava 08.12.2017 14:41

Другие вопросы по теме