WSDL Я создал клиент WebService с помощью CXF-Codegen Maven плагин, а затем создать экземпляр службы, как это:клиента перерывы CXF WebService при предоставлении
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setEndpointName(SERVICE_NAME);
factory.setAddress("some address");
factory.setServiceClass(Service.class);
this.port = (Service) factory.create();
Это все работает отлично, и я могу позвонить в WebService. Но у меня проблема с этим на Weblogic (XmlSchemaException: Top-level attributes may not have a 'use'), и в качестве возможного решения я пытаюсь предоставить WSDL-файл, чтобы он не был регенерирован. Но когда я добавить WSDL:
factory.setWsdlLocation("service.wsdl");
Я получаю это исключение:
org.apache.cxf.service.factory.ServiceConstructionException: Could not find definition for port {namespace}Service.
at org.apache.cxf.wsdl11.WSDLServiceFactory.create(WSDLServiceFactory.java:179)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:428)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:548)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:265)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:214)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:101)
at org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:90)
at org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:155)
at org.apache.cxf.jaxws.JaxWsProxyFactoryBean.create(JaxWsProxyFactoryBean.java:156)
я не могу изменять WSDL и я хотел бы знать, как это возможно, что строительство служба не выполняется, если Я предоставляю wsdl, с которого была создана служба.
Я использую CXF 2.6.11
Я не совсем понимаю, что я должен там предоставить (он ожидает QName). Фабрика уже имеет физический адрес веб-службы и конечной точки, ссылаясь на пространство имен и порт. – NeplatnyUdaj
Я удалил '' 'setEndpointName''' и добавил' '' setServiceName''' с тем же QName, и теперь он работает. Благодарю. Я думаю, проблема в моем случае заключается в том, что физический URL-адрес не соответствует пространству имен из wsdl – NeplatnyUdaj