2011-10-18 19 views
4

をスロー私たちは以下のように定義複合型で、JAX-RPCスタイルのWebサービスを持って、次のとおりです。複合型のマーシャリング例外

<xs:complexType name = "SomeFault"> 
<xs:sequence> 
<xs:element name = "errorMessages" type="some:ErrorMessageWSType" minOccurs="0" maxOccurs="unbounded" /> 
</xs:sequence> 
</xs:complexType> 

<xs:simpleType name = "ErrorMessageWSType"> 
<xs:restriction base = "xs:NMTOKEN"> 
<xs:enumeration value = "INVALID_1"/> 
<xs:enumeration value = "INVALID_2"/> 
<xs:enumeration value = "INVALID_3"/> 
</xs:restriction> 
</xs:simpleType> 

応答/私たちは、サーバ側でマーシャリング例外に実行されています障害複合型は、単一の配列型フィールドを持つ。

weblogic.wsee.codec.CodecException: com.bea.xml.XmlExceptionを符号化するために失敗しました:「オブジェクト をマーシャリングに 使用するのに適したバインディングタイプを見つけることができなかった[Lnamespace.type.ErrorMessageWSType; 693767e9 @ "使用してスキーマの種類: トン= SomeFault @のhttp://名前空間/ SOME/V1のjava タイプ:namespace.type.ErrorMessageWSType []

我々は複合型エラーに別の要素を追加することにより、SomeFaultを変更した場合去る。

<xs:complexType name = "SomeFault"> 
<xs:sequence> 
<xs:element name = "errorMessages" type="some:ErrorMessageWSType" maxOccurs="unbounded" /> 
<xs:element name = "dummyString" type="xsd:string" minOccurs="0" /> 
</xs:sequence> 
</xs:complexType> 

我々はWSDLCコード生成時に間違って何かをやっているか、これは既知の問題ですか?

同様の質問が既にhttps://forums.oracle.com/forums/thread.jspa?messageID=4462906に掲載されていますが、応答せずに、任意のポインタは素晴らしいことです。

ありがとうございました。

答えて

1

これが問題の「なぜ」の部分が解決するかどうか知らないが、あなたのような配列部分を書き換えてみてください:

<xs:sequence minOccurs="0" maxOccurs="unbounded"> 
<xs:element name="errorMessages" type="some:ErrorMessageWSType"/> 
</xs:sequence> 

第二ケースの作業をすることができますメカニズムであるかもしれないものOTOH、最初のものではない? マーシャルは、xsd:stringが何を意味するかを確認する前に何を意味するのかを把握しておかなければならない可能性があります。その後、レゾルバなどを目覚めさせなければなりませんか? この考え方は、私が試みる2番目のアプローチにつながります。ErrorMessageWSTypeの前にSomeFault(おそらく別の名前空間に、何か修正があるかどうかを確認するために)を宣言することになります。

ちょうど私の(疲れた)2セントです。私は、あなたのサンプルコードの中の何かがXMLに従っていないことを本当に見ることができないので、これらのアプローチのどちらもマーシャラーで何らかのバグを推測していると思いますスキーマ定義。

+0

両方の方法を試してみても、同じ例外があります。とにかく、ありがとう! –

+0

別の制限ベースを試しましたか? XMLスキーマ定義(http://www.w3.org/TR/xmlschema-2/#NMTOKEN)から: "互換性のために(用語(§1.4)を参照)NMTOKENは属性にのみ使用する必要があります。代わりに文字列を試してみてください。 – uvesten

+0

もそのオプションを試してみました...運はない...同じ例外があります! –

関連する問題