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