Как динамически автоматически генерировать Java Beans из WSDL?

Я хотел бы разработать приложение для тестирования веб-служб, которое будет автоматически генерировать форму JSF, используя параметры из предоставленного WSDL.

URL-адрес WSDL предоставляется пользователем, и я не знаю имен операций до его анализа. Я хотел бы, чтобы приложение выполняло проанализированные операции и их параметры и автоматически генерировало соответствующие Java Beans, которые я буду использовать для создания формы JSF.

Я протестировал CXF и JAX-WS, но я думаю, что они должны знать имена операций перед созданием Java-бинов. Как прозрачно генерировать Java Beans для любого WSDL? Запуск wsdl2java вручную не является решением.


person niutech    schedule 10.05.2012    source источник
comment
Как насчет запуска wsdl2java из вашей программы?   -  person Thorbjørn Ravn Andersen    schedule 10.05.2012
comment
AFAIK, wsdl2java генерирует файлы *.java с именами операций, которые я должен динамически компилировать и каким-то образом импортировать. Как бы я это сделал, не зная их имен до создания бинов?   -  person niutech    schedule 11.05.2012


Ответы (2)


CXF имеет «DynamicClient» (см.: http://cxf.apache.org/javadoc/latest-2.6.x/org/apache/cxf/jaxws/endpoint/dynamic/JaxWsDynamicClientFactory.html ), которые можно использовать для этого. Он анализирует wsdl, сгенерированные объекты JAXB и компилирует их, а также возвращает клиента, который можно использовать для получения операций и типов, связанных с ними.

person Daniel Kulp    schedule 10.05.2012
comment
Я использовал CXF DynamicClient, и он отлично работал: JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); Client c = dcf.createClient(url); Endpoint e = c.getEndpoint(); ServiceInfo si = endpoint.getService().getServiceInfos().get(0); BindingInfo bi = si.getBindings().get(0); BindingOperationInfo boi : bi.getOperations().get(0); - person niutech; 19.06.2012
comment
Я пробовал с кодом, приведенным выше, но не работает. он жалуется на .get(0) для BindingInfo и BindingOperationInfo. не могли бы вы разместить рабочий код здесь. Спасибо - person Motilal; 23.12.2015

Если вы используете Maven (а так и должно быть), вы можете использовать плагин CXF codegen для создания классов из WSDL. В моем блоге есть пример;

http://qwerky-qwerky.blogspot.co.uk/2011/12/programming-without-programming-1.html

person Qwerky    schedule 10.05.2012