



(Примечание: Этот ответ был предоставлен самим Аароном Дигуллой. Далее следует точный текст его собственного ответа.)
В 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>
Хммм ... кажется, я не могу отметить это как правильный ответ. Кто-нибудь может скопировать это, чтобы я пометил его сообщение?
Если ваш клиент работает на Java 6, рассмотрите возможность использования JAX-WS для использования WS. JAX-WS использует стандарт JAXB для привязки, и вам не нужна ни одна дополнительная банка для клиента.
Я подумаю об этом, когда наши производственные серверы перейдут на Java 6, что должно произойти в течение следующего десятилетия или около того ...;)
Фактически, вам нужна только зависимость ось-abd, поскольку ось2-ядро является подчиненной зависимостью ось-abd. Поэтому вы можете резюмировать это следующим образом:
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<version>1.5.1</version>
</dependency>
Обратите внимание, однако, что лучшие практики Maven говорят, что если вы используете что-либо из axis2-kernel в своем коде, вы должны объявить это явно. Так вы не столкнетесь с неожиданным сюрпризом позже, когда удалите adb. (Конечно, ядро всегда должно быть включено, по крайней мере, вы так думаете)
В 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.
Пример кода в этом отвечать
Минимальные банки для клиента:
Приведенные ниже файлы STAX не являются частью выпуска Axis2 1.5.1 и потребуются, если ваша версия JDK меньше 6:
Очень полный список. Именно то, что мне нужно, чтобы заставить Axis2 работать на моем сервере приложений Websphere v8.5
Пришлось добавить и транспорты
<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
Мне также удалось избавиться от axis2-transport-local, но это может быть только потому, что я программно настраиваю Axis.
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/…
Для тех, кто использует 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.
В итоге минимальная зависимость для работающего клиента
Ниже перечислены минимальные зависимости с подробностями.
клиентская заглушка использует класс ServiceClient, сгенерированный с помощью инструмента% AXIS2_HOME% \ bin \ WSDL2Java для данного WSDL (для создания вам потребуются все jar-файлы оси в пути к классам, что проще всего достигается путем установки AXIS_HOME)
org.apache.axis2.AxisFault: в соединении отказано: соединение -> ОШИБКА ТОЛЬКО, если веб-служба не работает или недоступна по какой-либо другой причине
Обратите внимание на точную версию (и), однако поведение будет достаточно общим с учетом изменений упаковки в версии, следовательно, упомянутые выше FQCN -
Версия оси - 1.6.3
Версия Tomcat - Apache Tomcat / 7.0.64
Версия сервлета - 3.0
java.runtime.version - 1.7.0_79-b15
Спасибо. Это именно то, что я искал.
в новых версиях Axis2 упомянутых зависимостей недостаточно, см. ответ Рено ниже