Мой pom.xml
содержит следующее для автоматической генерации клиента для работающей веб-службы с указанным ниже WSDL:
<plugin>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-codegen-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>generate-sources</id>
<configuration>
<sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/wsdl/myclient.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-verbose</extraarg>
</extraargs>
<wsdlLocation>wsdl/myclient.wsdl</wsdlLocation>
</wsdlOption>
</wsdlOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
</execution>
</executions>
</plugin>
Проект строится нормально, без ошибок или предупреждений, и я вижу файл myclient.wsdl
в файле JAR прямо под папкой wsdl
.
Но когда я пытаюсь запустить этот JAR:
java -Xmx1028m -jar myclient-jar-with-dependencies.jar
Он жалуется, что «Не удается инициализировать wsdl по умолчанию из wsdl / myclient.wsdl»
Почему?
Что мне не хватает?
Как я могу узнать, какой путь, который wsdl/myclient.wsdl
в pom.xml переводится, заставляет клиентский JAR жаловаться во время выполнения?
Обновление: мне известны некоторые решения / обходные пути, которые включают изменение автоматически сгенерированного кода:
- Передайте "null" для URL-адреса wsdl, а затем используйте порт ((BindingProvider) .getRequestContext (). put (BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://example.com/ ...."), чтобы задать адрес.
- загрузите WSDL как ресурс Java и передайте его местоположение в конструктор службы.
Но меня больше интересует решение, которое требует ввода правильных значений в pom.xml
, например, подход к пути к классам (но, к сожалению, путь к классам не использовался у меня почему-то не работает).
Есть идеи, что мне вместо этого набирать? По-видимому, это очень простой случай определения правил правильного пути для этого конкретного плагина, но я что-то упускаю и не знаю, что это такое.