私はインターフェイスで定義されたenumを持つWCFで実装されたWebサービスを使用しています。私はこれをJavaのBlackBerryクライアントから呼び出そうとしています。私はEclipseを使ってBlackBerry用のJavaアプリケーションを開発しています。私はSun Java Wireless Toolkit(WTK)2.5.2を使ってスタブコードを生成しています。これは、Webサービスがかなり大きい(すでにWindows Mobileクライアントで使用されている)ためです。WTKスタブジェネレータでenumsのjava.io.ObjectStreamExceptionが使用されるのはなぜですか?
WTKを使用してスタブコードを生成しようとすると、Eclipseで列挙型に関するエラーが発生します。次の関数では、java.io.ObjectStreamExceptionを型に解決できないというエラーが発生します。
private Object readResolve()
throws java.io.ObjectStreamException {
return fromValue(getValue());
}
スタブジェネレータを実行する場合、CLDC 1.0またはCLDC 1.1のいずれかのスイッチがあります。両方のオプションを指定して生成すると、同じ問題が発生します。
私はこのことについて、Sunの回答なしでこれについてforum postが見つかりました。この記事の担当者は、「今、java.io.ObjectStreamExceptionはCLDCにはなく、CDCにあります.Web Services用のスタブをJ2ME、特にCLDC 1.0/1.1用に作成するための優れたツールがありますか?私はそれがCLDC 1.1に存在しないことを[documentation 3]を見て確認しました。
Eclipseでこの状況を修正するための2つのクイックフィックスがあります:1)パッケージ 'java.io'でクラス 'ObjectStreamException'を作成するか、2)プロジェクト設定を修正してください。
更新:JAX-RPCサブセットは、XMLの列挙のサポートを提供していません
ここJSR-172の仕様が言うことである...
5.2.5列挙 。
5.2.6制限で派生した単純型 JAX-RPCサブセットは、制限によって単純な型を派生させるためのサポートを提供しません。
WCF列挙のWSDLは、<xs:enumeration>
を含む<xs:restriction>
の<xs:simpleType>
を生成します。だから私はちょうどこのフィールドが代わりにintと定数を定義すると言うのですか?
これはWTKのバグですか?その場合、私はSunにバグレポートを提出し、彼らが応答するかどうかを確認します。なぜツールキットはこれをエラーとしてフラグを立てていないでしょうか?
ここで、JSR-172に準拠するようにインターフェイスを変更する必要があります。 WSDLを読み、コンプライアンスの問題を指摘するツールはありますか?
JSR-172の仕様は次のとおりです。 5.2.5列挙型 JAX-RPCサブセットは、XML列挙型をサポートしていません。 5.2.6制限によって導出される単純型 JAX-RPCサブセットは、制限によって単純な型を派生させるためのサポートを提供しません。 WCF列挙のWSDLは、にを含むを生成します。うーん...それは動作するように見えません。 –
chrish