1

cxf を使用して Web サービスをデプロイしようとしています。

次のコードを使用して、エンドポイントを宣言します

<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"
    />

そして、私のwsdlはそのように見えます

[...]
<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>  
[...]

Tomcat サーバーを実行している場合、次のメッセージが常に表示されます。

 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

構成の何が問題になっていますか?

4

2 に答える 2

0

その wsdl で wsdl2java を実行し、メソッド シグネチャが生成されたものと一致することを確認します。@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) アノテーションがないようで、そのメソッドの戻り値の型が間違っています。(Type1 ではなく Team51 のようです)

于 2013-02-04T15:30:50.817 に答える
0

Operation を定義する名前空間が正しくありません。エラーは、名前空間が正しくないクラスを正確に明らかにしているため、それを見つけることができず、ラップを解除できません。

名前空間を修正すると、適切な WSDL を作成できるようになります。

于 2016-03-25T10:15:13.910 に答える