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

StackOverflow https://stackoverflow.com/questions/320178

  •  11-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

  • activation-1.1.jar
  • axiom-api-1.2.8.jar
  • axiom-impl-1.2.8.jar
  • axis2-adb-1.5.1.jar
  • axis2-kernel-1.5.1.jar
  • axis2-transport-http-1.5.1.jar
  • axis2-transport-local-1.5.1.jar
  • commons-codec-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 jars не являются частью версии Axis2 1.5.1 и понадобятся, если ваша версия JDK меньше 6:

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

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

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

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


  • axiom-api-1.2.14.jar
  • axiom-impl-1.2.14.jar
  • axis2-adb-1.6.3.jar
  • axis2-kernel-1.6.3.jar
  • axis2-transport-http-1.6.3.jar
  • axis2-transport-local-1.6.3.jar
  • commons-codec-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 (для генерации вам понадобятся все банки axis в classpath, что проще всего сделать, установив 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.OMNamespace
  • 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:Не найдена мета-фабрика для функции "по умолчанию";обычно это означает, что 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/ведение журнала/LogFactory)
  • httpcore-4.0.jar (без этого java.lang.NoClassDefFoundError:org/apache/http/HttpResponseFactory)
  • mail-1.4.jar (без этого java.lang.NoClassDefFoundError:javax/почта/интернет/Исключение 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/схема/XMLSchema)

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

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

Версия Axis - 1.6.3

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

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

java.runtime.версия - 1.7.0_79-b15

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>

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top