Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

  • активация-1.1.jar
  • Аксиома-апи-1.2.8.jar
  • Аксиома-осущ-1.2.8.jar
  • axis2-ADB-1.5.1.jar
  • axis2-ядро-1.5.1.jar
  • axis2-транспорт-клиент-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

Ответ 3

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

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

Ответ 4

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


  • Аксиома-апи-1.2.14.jar
  • Аксиома-осущ-1.2.14.jar
  • axis2-ADB-1.6.3.jar
  • axis2-ядро-1.6.3.jar
  • axis2-транспорт-клиент-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 (для генерации вам понадобятся все осевые баки на пути к классам, что достигается наиболее легко, установив AXIS_HOME)

Классы, требуемые заглушкой клиента в момент COMPILE


  • 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

  • axiom-impl-1.2.14.jar(без этого org.apache.axiom.om.OMException: не найдено meta factory для функции '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: соединение отклонено: connect → ОШИБКА ТОЛЬКО, если веб-служба недоступна или доступна по какой-либо другой причине.

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

Версия Axis - 1.6.3

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

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

java.runtime.version - 1.7.0_79-b15

Ответ 5

Axis2 version 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>

Ответ 6

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

Ответ 7

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

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

Ответ 8

В версии 1.5.1 Axis2 модули 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.

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

Ответ 9

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