0

HTTP アウトバウンド経由で CXF JAXWS サービスを使用して Web サービスを公開しました。

以下は、Mule 構成からのエンドポイント宣言の構文です。

<http:inbound-endpoint address="http://localhost:8080/HelloService"  exchange-pattern="request-response">
        <cxf:jaxws-service serviceClass="com.example.service.HelloServiceImpl" wsdlLocation="wsdl/helloservice.wsdl"
        namespace="http://example.org/HelloService"          
         port="HelloServicePort"   service="HelloService"  >

しかし、これはうまくいきません。これをミュールサーバーで実行しようとすると、以下のエラーが発生します。

2013-04-08 16:34:35,252 ERROR [main] mule.MuleServer (MuleServer.java:474) - 
********************************************************************************
* A Fatal error has occurred while the server was running:                     *
* Could not find definition for port                                           *
* {http://service.example.com/}HelloServiceImplPort.                *
* (org.apache.cxf.service.factory.ServiceConstructionException)                *
*                                                                              *
* The error is fatal, the system will shutdown                                 *
********************************************************************************

サービス エンドポイントの宣言で述べたものとは異なるポートを探しています。

問題が何であるかを理解するのを手伝ってください。

以下は、このサービスの wsdl です。

この WSDL を作成し、cfx の wsdl2java を使用してコードを生成しました。次に、サービス インターフェイス操作を実装しました。次に、Mule フローでサービスを設定しました。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://example.org/HelloService" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="HelloService" targetNamespace="http://example.org/HelloService"
 xmlns:per="http://example.org/HelloService/person"
 xmlns:comp="http://example.org/HelloService/company"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  >

    <wsdl:types>        
    <xsd:schema targetNamespace="http://example.org/HelloService/company" >    
        <xsd:include schemaLocation="company.xsd"  ></xsd:include>    
    </xsd:schema>
    <xsd:schema targetNamespace="http://example.org/HelloService/person"> 
        <xsd:include schemaLocation="person.xsd"  ></xsd:include>    
    </xsd:schema>
  </wsdl:types>


  <wsdl:message name="addCompanyRequest">
    <wsdl:part element="comp:Company" name="company"/>
  </wsdl:message>

  <wsdl:message name="addPersonRequest">
    <wsdl:part element="per:Person" name="person"/>
  </wsdl:message>

  <wsdl:message name="addCompanyResponse">
    <wsdl:part element="comp:CompResponse" name="response"/>
  </wsdl:message>

  <wsdl:message name="addPersonResponse">
    <wsdl:part element="per:PerResponse" name="response"/>
  </wsdl:message>

  <wsdl:portType name="HelloService">
    <wsdl:operation name="addCompany">
      <wsdl:input message="tns:addCompanyRequest" name="addCompanyRequest" />
      <wsdl:output message="tns:addCompanyResponse" name="addCompanyResponse" />
    </wsdl:operation>

    <wsdl:operation name="addPerson">
      <wsdl:input message="tns:addPersonRequest" name="addPersonRequest" />
      <wsdl:output message="tns:addPersonResponse"  name="addPersonResponse" />
    </wsdl:operation>

  </wsdl:portType>

  <wsdl:binding name="HelloServiceSOAP" type="tns:HelloService">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="addCompany">
      <soap:operation soapAction=""  style="document" />
      <wsdl:input name="addCompanyRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="addCompanyResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>

    <wsdl:operation name="addPerson">
      <soap:operation soapAction=""  style="document" />
      <wsdl:input name="addPersonRequest">
        <soap:body use="literal"/>
      </wsdl:input>
      <wsdl:output name="addPersonResponse">
        <soap:body use="literal"/>
      </wsdl:output>
    </wsdl:operation>

  </wsdl:binding>

  <wsdl:service name="HelloService">
    <wsdl:port binding="tns:HelloServiceSOAP" name="HelloServicePort">
      <soap:address location="http://localhost:8080/HelloService"/>
    </wsdl:port>
  </wsdl:service>  

</wsdl:definitions>
4

2 に答える 2

0

この例<cxf:jaxws-service serviceClass="interface-name and not implementation name>では引用されていません

于 2013-04-09T18:26:12.590 に答える