Как проще всего сгенерировать код из wsdl (cxf)?

Мне нужно использовать веб-сервис с безопасностью веб-сервиса. Этот веб-сервис был создан с использованием cxf (не мной).

Я пробовал пока:

wsimport с локально загруженным wsdl (http://theopentutorials.com/examples/java-ee/jax-ws/create-and-consume-web-service-using-jax-ws/). Это не удалось с парой ошибок. Я пробовал без -расширения, говоря «нет используемого порта, попробуйте использовать -расширение». Я попробовал это с -расширением, говорящим «нет стандартного SOAP». Я подумал, что это может быть потому, что они использовали CXF.

клиент веб-службы, использующий cxf в eclipse (http://help.eclipse.org/luna/topic/org.eclipse.jst.ws.cxf.doc.user/tasks/create_client.html). Когда я выбираю на шаге 3d «Apache CXF 2», кнопка OK становится серой. Возможно, это неразрешенная ошибка (https://bugs.eclipse.org/bugs/show_bug.cgi?id=351799) если я правильно понял.

wsdl2java (https://axis.apache.org/axis2/java/core/tools/eclipse/wsdl2java-plugin.html#Installation). Я выполнил инструкции, получив исключение при нажатии кнопки «Готово» «Произошла ошибка при завершении процесса - java.lang.InterruptedException: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException».

изменить: я запустил wsdl2java сейчас в командной строке, получив следующую ошибку:

wsdl2java -d C: \ xkfz -client -verbose C: \ xkfz.wsdl Загрузка FrontEnd jaxws ... Загрузка DataBinding jaxb ... wsdl2java -d C: \ xkfz -client -verbose C: \ xkfz.wsdl wsachel2XFjava - Apache 3.0.1

26 августа 2014 г. 16:07:23 org.apache.cxf.wsdl11.WSDLServiceBuilder checkForWrapped ИНФОРМАЦИЯ: операция {http://www.xoev.de/schemata/xkfz/1_1} verarbeiteXKfz нельзя развернуть, входное сообщение должно ссылаться на объявление глобального элемента с таким же локальным именем, что и операция

Есть ли способ сгенерировать желаемые классы? Это не должно быть так сложно: - /

Я использую Win7 / 64 с последними версиями Eclipse EE и JDK.


person UNeverNo    schedule 26.08.2014    source источник
comment
Можете ли вы опубликовать URL-адрес WSDL? Что касается ошибки Eclipse, возможно, она связана с этим: stackoverflow.com/questions/25391606/.   -  person asohun    schedule 26.08.2014


Ответы (3)


CXF включает плагин Maven, который может генерировать java-артефакты из WSDL. Достаточно добавить его с некоторыми указанными значениями конфигурации, например:

<plugin>
    <groupId>org.apache.cxf</groupId>
    <artifactId>cxf-codegen-plugin</artifactId>
    <version>${cxf.version}</version>
    <executions>
        <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
                <sourceRoot>${project.build.directory}/generated/cxf</sourceRoot>
                <wsdlOptions>
                    <wsdlOption>
                        <wsdl>${basedir}/src/main/resources/myService.wsdl</wsdl>
                    </wsdlOption>
                </wsdlOptions>
            </configuration>
            <goals>
                <goal>wsdl2java</goal>
            </goals>
        </execution>
    </executions>
</plugin>

См. этот адрес для получения дополнительной информации. . Надеюсь это поможет.

person Farzad Fallah    schedule 26.08.2014
comment
Мне кажется, что под капотом используется axis2 wsdl2java. Вы можете это подтвердить? - person UNeverNo; 26.08.2014
comment
Нет! Вы должны добавить cxf прямо в зависимости вашего проекта! - person Farzad Fallah; 27.08.2014

Попробуйте использовать плагин eclipse для создания ваших классов

http://sourceforge.net/projects/wsdl2javawizard/

person Ayrad    schedule 26.08.2014
comment
Извините, забыл об этом упомянуть. Уже пробовал. Но после распаковки этих zip-архивов в папку eclipse-plugins я не получаю ссылки на Import WebService. - person UNeverNo; 26.08.2014

Я обнаружил, что могу игнорировать ошибку wsdl2java, потому что она все равно сгенерировала класс. Я только ожидал другого Class-name в соответствии с примерами, которые я получил от ws-creator.

person UNeverNo    schedule 28.08.2014