且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

“无法解开操作”;使用Apache CXF

更新时间:2023-11-17 23:09:10

定义操作的名称空间不正确。错误恰恰是发现名称空间不正确的类,因此它找不到它并且无法解包。



修复名称空间应该可以使您正确地创建WSDL。 / p>

I'm trying to deploy a webservice using cxf.

I use the following code to declare my endPoint

<jaxws:endpoint
xmlns:wsdl="com_documentation_service_standardfeatures_application_webservices_uc51_webserviceServer_WebServiceSearch"  
 id="webServiceSearchEndpoint"
    implementor="#com.documentation.service.standardfeatures.application.webservices.uc51_webserviceServer.WebServiceSearch"
    wsdlLocation="classpath:resources/schemas/wsdl/com_documentation_service_standardfeatures_application_webservices_uc51_webserviceServer_WebServiceSearch.wsdl"
    endpointName="wsdl:WebServiceSearchPort"
    serviceName="wsdl:com_documentation_service_standardfeatures_application_webservices_uc51_webserviceServer_WebServiceSearch"
    address="http://localhost:8888/service2"
    />

And my wsdl looks like that

[...]
<wsdl:types>
<schema targetNamespace="com_documentation_service_standardfeatures_application_webservices_uc51_webserviceServer_WebServiceSearch_types" xmlns="http://www.w3.org/2001/XMLSchema"
 xmlns:team51="com_documentation_business_standardfeatures_application_webservices_uc51_webserviceClient_entities_Team51"    >
    <import namespace="com_documentation_business_standardfeatures_application_webservices_uc51_webserviceClient_entities_Team51" schemaLocation="classpath:resources/schemas/xsd/com_documentation_business_standardfeatures_application_webservices_uc51_webserviceClient_entities_Team51.xsd"/>
    <element name="team51" type="team51:team51"/>
    <element name="anyType" type="xsd:anyType"/>
    <element name="string" type="xsd:string"/>
    <element name="integer" type="xsd:integer"/>
    <element name="float" type="xsd:float"/>
    <element name="long" type="xsd:long"/>
    <element name="dateTime" type="xsd:dateTime"/>
    <element name="boolean" type="xsd:boolean"/>        
    <element name="collection" type="types:collectionType"/>        
    <complexType name="collectionType">
        <sequence>
            <element type="xsd:anyType" minOccurs="0" maxOccurs="unbounded" name="element"/>
        </sequence>
    </complexType>  
</schema>
</wsdl:types>

  <wsdl:message name="team51FindByID">
    <wsdl:part name="id" element="types:long"/>
  </wsdl:message>
  <wsdl:message name="team51FindByIDResponse">
       <wsdl:part name="return" element="types:team51"/>
  </wsdl:message>

  <wsdl:portType name="WebServiceSearch">  
   <wsdl:operation name="team51FindByID">
     <wsdl:input name="team51FindByID" message="team51FindByID">
   </wsdl:input>
    <wsdl:output name="team51FindByIDResponse" message="team51FindByIDResponse">
   </wsdl:output>
   </wsdl:operation>    
 </wsdl:portType>  
[...]

When running tomcat server, the following message always appears.

 ATTENTION: Could not unwrap Operation {documentation_service_standardfeatures_application_webservices_uc51_webserviceServer_WebServiceSearch}team51FindByID to match method "public abstract Type1 team51FindByID(java.lang.Long)"

 org.apache.cxf.endpoint.ServerImpl initDestination

What's wrong with my configuration ?

The namespace where you define the Operation is not correct. Error is precisely uncovering on what class the namespace is not correct, so it can not find it and can not unwrap.

Fixing the namespace should enable you proper WSDL creation.