2012-05-15 20 views
6

私のWebサービスに接続している間、私はエラーを取得する:CXF:アンマーシャリングエラー:予期しない要素、{}は何を意味しますか?

javax.xml.ws.soap.SOAPFaultException: Unmarshalling Error: unexpected element (uri:"", local:"OrderID"). Expected elements are <{}Login>,<{}CrewId>,<{}OrderID >,<{}OrderNumber >

サービスはorg.apache.cxf.transport.servlet.CXFServletjaxws:endpoint注釈を用いて露光されます。クライアントはCXFを使用して生成されます。まず、私にとって驚くべきことは、私は両端で同じ技術を使用していて、解決策は動作していない、第2に、この不思議な{}エラーメッセージです。

だから何が間違っていて、この{}を理解するのか?

答えて

10

OrderIDと「>」の間にスペースがありますか?期待されるのは<{}OrderID >で、あなたは"OrderID"です。要素名にスペースがないか確認してください。

これは、JAX-B Unmarshallerのは、あなたの期待していることを意味します

+0

はい、あなたは正しいです、私はそこにスペースを追加しました。 –

+0

+1私の時間を節約するために、あなたのヒントは、同じ非常に明確なエラーメッセージをもたらした要素名(余分なスペースではなく、ちょうど別の名前)でタイプミスを見つけるのを助けました。 – Withheld

+0

シンプルでストレートな答え。私は非常に多くのコメントを読んだが、これは最高のものである。 – VJS

15

Have you noted space between OrderID and '>'? Expected is <{}OrderID > and you send >"OrderID". Check if you don't have spaces in your element names.

はあなたが必要なものを手に入れるステパンVihorから上記の答えが助けたが、私は「{}」は何を意味するのか、あなたの質問に答えてみましょうOrderID要素が名前空間を持たないようにします。つまり、その要素の名前空間uriは ""と等しい必要があります。

は時々あなたは、WSDL(大文字と小文字を区別)で使用される名前を指定する必要がありXML Namespaces

+0

はい、この説明をいただきありがとうございます。 –

-1

に簡単なイントロは、ここを参照してください: < {ログ}>、< {} CrewId>、<を{}受注> 、< {}注文番号>

@XmlElement(name = "CrewId") 
protected String crewId; 
@XmlElement(name = "OrderID ") 
protected String orderID; 
@XmlElement(name = "Login") 
protected String login; 
@XmlElement(name = "OrderNumber") 
protected String orderNumber; 
2

@icyitscold、私は私の経験から追加するコメントは、あなたが elementFormDefault="qualified"として「資格」にelementFormDefault要素を変更することができます ですのxs:schema要素。名前空間はデフォルトで修飾されます。

あなたは、コードの最初のアプローチを使用している場合、WSDL、最初のアプローチのためだ

、あなたは

javax.xml.ws.soap.SOAPFaultException: Unmarshalling Error: unexpected element (uri:"", local:"country"). Expected elements are <{}seconds>,<{}month>,<{}hour>,<{}year>,<{}minutes>,<{}day>

その後、

@javax.xml.bind.annotation.XmlSchema( attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)

0
私は同じエラーを得た

として変更を加える検討することができるIレスポンスタイプが新しいプロパティ 'country'を追加したWebサービス側で検索します。

新しい追加プロパティを無視するには、 'jaxws:client'設定で次のプロパティを追加します。

<jaxws:client id="abc" 
       serviceClass="someClass" 
       address="url"> 
    <jaxws:properties> 
     <entry key="schema-validation-enabled" value="false"/> 
     <entry key="set-jaxb-validation-event-handler" value="false"/> 
    </jaxws:properties> 
</jaxws:client> 
関連する問題