Это мой первый раз с CXF. Я пишу клиент, чтобы потреблять веб-сервис. Мое требование - написать клиенту, а также добавить перехватчик протоколирования. К сожалению, поставщик услуг не делает WSDL
доступным через URL?wsdl
. У меня есть все необходимое WSDLs and XSDs
от поставщика услуг в zip-файле, и я должен использовать эту версию файлов для создания моего клиента. До сих пор я придерживался нескольких примеров и читал довольно много о клиентах CXF
. Похоже, что правильный подход к запуску клиента правильный. Однако здесь это не работает. Мне нужна помощь в решении этого.Не удается получить доступ к веб-сервису с клиентом CXF, когда WSDL недоступен в сервисе URL
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(<SERVICE_CLASS_NAME>.class); <<I have the ".class for service here>>
QName SERVICE_NAME = new QName(<<namespaceURI>>, <<ServiceName>>);
factory.setServiceName(SERVICE_NAME);
factory.setAddress(SERVICE_URL);
factory.setWsdlLocation(localWSDLAddress);
portType = factory.create();
Это отдельная программа-клиент, и я попробовал несколько комбинаций баночка файлов для запуска этой программы (подробности ниже). Программа не выходит за пределы последней строки, упомянутой в фрагменте кода выше. Трассировка исключения следующая.
Exception in thread "main" java.lang.AbstractMethodError: org.apache.cxf.binding.soap.SoapTransportFactory.createEndpointInfo(Lorg/apache/cxf/service/model/ServiceInfo;Lorg/apache/cxf/service/model/BindingInfo;Ljava/util/List;)Lorg/apache/cxf/service/model/EndpointInfo;
at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildEndpoint(WSDLServiceBuilder.java:459)
at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(WSDLServiceBuilder.java:356)
at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(WSDLServiceBuilder.java:203)
at org.apache.cxf.wsdl11.WSDLServiceFactory.create(WSDLServiceFactory.java:175)
at org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:408)
Командная строка, используемая для запуска моей клиентской программы, которая содержит приведенный выше фрагмент кода. Я пришел к этому списку файлов jar через пробную версию и ошибку.
java -cp %CLASSPATH%;.;./cxf-core-3.0.2.jar;./cxf-rt-bindings-soap-3.0.2.jar;./cxf-rt-bindings-xml-3.0.2.jar;./cxf-rt-core-2.7.11.jar;./cxf-rt-frontend-simple-3.0.2.jar;./cxf-rt-ws-addr-3.0.2.jar;./cxf-rt-ws-policy-3.0.2.jar;./neethi-3.0.2.jar;./wsdl4j-1.6.3.jar;./xmlschema-core-2.1.0.jar;./cxf-rt-frontend-jaxws-3.0.2.jar;./cxf-bundle-3.0.0-milestone2.jar;./cxf-bundle-jaxrs-2.7.12.jar;./woodstox-core-asl-4.4.1.jar;./stax2-api-3.1.4.jar;./cxf-rt-databinding-jaxb-3.0.2.jar;./cxf-common-utilities-2.5.11.jar;./cxf-rt-transports-http-3.0.2.jar javaclass