2009-06-01 16 views
2

私はインターフェイスで定義された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を読み、コンプライアンスの問題を指摘するツールはありますか?

答えて

2

CLDCとWireless ToolkitはどちらもJava Micro Editionを使用しています。 JavaMEは、Java言語のバージョン2に基づいています。つまり、ジェネリックではなく、列挙型でもありません。

BlackberryハンドセットのWebサービスを調査するための最初のステップは、JSR-172の仕様を読むことです。

+0

JSR-172の仕様は次のとおりです。 5.2.5列挙型 JAX-RPCサブセットは、XML列挙型をサポートしていません。 5.2.6制限によって導出される単純型 JAX-RPCサブセットは、制限によって単純な型を派生させるためのサポートを提供しません。 WCF列挙のWSDLは、を含むを生成します。うーん...それは動作するように見えません。 – chrish

関連する問題