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