提供wsdl时,CXF Webservice客户端会中断

时间:2014-01-16 16:37:58

标签: java web-services wsdl weblogic cxf

我使用cxf-codegen maven插件创建了一个webservice客户端,然后像这样实例化服务:

    JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
    factory.setEndpointName(SERVICE_NAME);
    factory.setAddress("some address");
    factory.setServiceClass(Service.class);
    this.port = (Service) factory.create();

一切正常,我可以拨打网络服务。但我在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

1 个答案:

答案 0 :(得分:2)

您可能还需要一个factory.setServiceName(...)调用来匹配WSDL。