0

Netbeans7.1.2のWSDLから[新規]->[Webサービス]を使用してWebサービスを作成しようとしています。

私は先に進み、XMLスパイを使用してWSDLを作成しました。これが私が作成した基本的なWSDLです:

<wsdl:definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
xmlns:wsp="http://www.w3.org/ns/ws-policy" 
xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" 
xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:tns="http://planningservice.ohs.com/" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://docs.oasis-open.org/wsn/t-1" xmlns:ns1="http://www.isotc211.org/2005/gco" xmlns:ns2="http://www.isotc211.org/2005/gmd" xmlns:ns3="http://www.isotc211.org/2005/gsr" xmlns:ns4="http://www.isotc211.org/2005/gss" xmlns:ns5="http://www.isotc211.org/2005/gts" xmlns:ns6="http://www.opengis.net/gml/3.2" xmlns:ns7="http://www.opengis.net/ows/1.1" xmlns:ns8="http://www.opengis.net/sps/2.0" xmlns:ns9="http://www.opengis.net/swe/2.0" xmlns:ns10="http://www.opengis.net/swes/2.0" xmlns:ns11="http://www.w3.org/2005/08/addressing" name="PlanningService" targetNamespace="http://planningservice.ohs.com/">
<wsdl:import namespace="http://www.opengis.net/sps/2.0" location="http://schemas.opengis.net/sps/2.0/spsGetFeasibility.xsd"/>
<wsdl:types>
    <xsd:schema>
        <xsd:import namespace="http://ps.ca"/>
    </xsd:schema>
</wsdl:types>
<wsdl:message name="GetFeasibility">
    <wsdl:part name="parameters" type="ns8:GetFeasibilityType"/>
</wsdl:message>
<wsdl:message name="GetFeasibilityResponse">
    <wsdl:part name="parameters" type="ns8:GetFeasibilityResponseType"/>
</wsdl:message>
<wsdl:portType name="PlanningService">
    <wsdl:operation name="GetFeasibility">
        <wsdl:input message="tns:GetFeasibility" wsam:Action="http://planningservice.ohs.com/PlanningService/getFeasibility"/>
        <wsdl:output message="tns:GetFeasibilityResponse" wsam:Action="http://planningservice.ohs.com/PlanningService/getFeasibilityResponse"/>
    </wsdl:operation>
</wsdl:portType>
<wsdl:binding name="PlanningSerivcePortBinding" type="tns:PlanningService">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="GetFeasibility">
        <soap:operation soapAction="' '"/>
        <wsdl:input>
            <soap:body use="literal"/>
        </wsdl:input>
        <wsdl:output>
            <soap:body use="literal"/>
        </wsdl:output>
    </wsdl:operation>
</wsdl:binding>
<wsdl:service name="PlanningSerivce">
    <wsdl:port name="PlanningService" binding="tns:PlanningSerivcePortBinding">
        <soap:address location="http://localhost:8080/PlanningService/"/>
    </wsdl:port>
</wsdl:service>

上記を使用しようとすると、「WSDLからの新しいWebサービス」ウィザードに「指定されたWSDLファイルにサービスがありません」と表示されます。

次のように、location属性を指定しない場合:

<wsdl:service name="PlanningSerivce">
    <wsdl:port name="PlanningService" binding="tns:PlanningSerivcePortBinding">
        <soap:address/>
    </wsdl:port>
</wsdl:service>

その通知はありませんが、Webサービスの作成中に、属性が欠落しているというエラーが表示されます。

したがって、私の質問は、サービスがどこにもデプロイされていない場合に、サービスが定義されていることをNetbeansに認識させるためにlocation属性に何を入れるかです。

皆さんありがとう!

〜D

4

1 に答える 1

0

提供されているWSDLドキュメントは完全に有効ではありません。

最初の問題はドキュメントスタイルの宣言ですが、rpcスタイルのメッセージ宣言です。Rpcは、「タイプ」で定義されたメッセージ部分を使用します。ドキュメントは、要素の観点から定義されたメッセージ部分を使用します。WSDLにインポートされたXSDを調べたところ、そこで定義されている「GetFeasibility」要素と「GetFeasibilityResponse」要素が見つかりました。したがって、wsdl:messageノードを次のように変更します。

  <wsdl:message name="GetFeasibility">
    <wsdl:part name="parameters" element="ns8:GetFeasibility"/>
  </wsdl:message>
  <wsdl:message name="GetFeasibilityResponse">
    <wsdl:part name="parameters" element="ns8:GetFeasibilityResponse"/>
  </wsdl:message>

メッセージ定義をドキュメントスタイルサービスと一致させることで役立ちます。http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/に、wsdlの構築と宣言されたスタイルについてのすばらしい記事があります。

次の問題はスキーマのインポートです。wsdl:importステートメントには特別な制限があります。一般に、スキーマをプルする適切な場所はwsdl:typesセクションです。あなたがのようなものを使用する場合

  <wsdl:types>
    <xsd:schema>
      <xsd:import namespace="http://www.opengis.net/sps/2.0" 
      schemaLocation="http://schemas.opengis.net/sps/2.0/spsGetFeasibility.xsd"/>
      <xsd:import namespace="http://ps.ca"/>
    </xsd:schema>
  </wsdl:types>

(ps.caインポートの値がわからない)、関連するタイプがwsdlインポート機構で使用可能です。wsdlインポートの記事はhttp://scn.sap.com/people/kevin.liu/blog/2004/06/28/a-note-on-wsdl-and-xsd-importsにあります。

これらの変更が行われた後も、wsimportはopengis.netのサポートスキーマで名前の衝突という形でエラーを検出しましたが、これでプロジェクトを少し進めることができ、名前の衝突ではなく名前の衝突に集中できるようになることを願っていますwsdl構造との戦い。

于 2012-05-24T03:46:10.300 に答える