Какой минимальный путь к классу для клиента Axis2? - PullRequest
31 голосов
/ 26 ноября 2008

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

Ответы [ 9 ]

28 голосов
/ 27 августа 2010

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

  • Активация-1.1.jar
  • Аксиома-апи-1.2.8.jar
  • Аксиома-осущ-1.2.8.jar
  • axis2-ADB-1.5.1.jar
  • axis2-ядро-1.5.1.jar
  • axis2-транспортного HTTP-1.5.1.jar
  • axis2-транспортный местный 1.5.1.jar
  • Обще-кодек-1.3.jar
  • Обще-HttpClient-3.1.jar
  • Обще-каротаж 1.1.1.jar
  • httpcore-4.0.jar
  • почта-1.4.jar
  • Нить-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-апи-1.0.1.jar
13 голосов
/ 19 апреля 2011

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

<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>
13 голосов
/ 26 ноября 2008

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

В 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>

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

9 голосов
/ 26 сентября 2015

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


  • Аксиома-апи-1.2.14.jar
  • Аксиома-осущ-1.2.14.jar
  • axis2-ADB-1.6.3.jar
  • axis2-ядра 1.6.3.jar
  • axis2-транспортного HTTP-1.6.3.jar
  • axis2-транспортный местный 1.6.3.jar
  • Обще-кодек-1.3.jar
  • Обще-HttpClient-3.1.jar
  • Обще-каротаж 1.1.1.jar
  • httpcore-4.0.jar
  • почта-1.4.jar
  • Нить-3.0.2.jar
  • wsdl4j-1.6.2.jar
  • XmlSchema-1.4.7.jar

Перечислено ниже минимальных зависимостей с деталями

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

Классы, необходимые клиенту-заглушке в COMPILE time


  • 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.OMNamespace
  • axis2-adb-1.6.3.jar - требуется во время компиляции заглушкой клиента для org.apache.axis2.databinding.ADBException
  • axis2-kernel-1.6.3.jar - требуется во время компиляции заглушкой клиента для org.apache.axis2.AxisFault Class

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

  • 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

5 голосов
/ 06 декабря 2012

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

    <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>
1 голос
/ 02 апреля 2010

В 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 голос
/ 30 декабря 2009

На самом деле вам нужна только зависимость axis-abd , так как axis2-kernel является зависимостью axis-abd . Поэтому вы можете подвести итог:

<dependency>
    <groupId>org.apache.axis2</groupId>
    <artifactId>axis2-adb</artifactId>
    <version>1.5.1</version>
</dependency>
1 голос
/ 02 декабря 2008

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

0 голосов
/ 17 сентября 2015

Для тех, кто использует 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.

...