Apache Axis 1.1 と Microsoft .NET Framework 1.0/1.1 との相互運用性についての FAQ

質問: Java と Microsoft .NET Framework との間は、どのデータ型が安全に使用することができますか?

回答: 以下の単純な Java データ型が使用できます。String、boolean、byte、short、int、long、float、double。上記の型付き配列も作成することができます。標準的な Sun のJavaBeansJavaBeansの配列もサポートしています。

質問: java.util.Calendar の値は転送できますか?

回答: Calendar オブジェクトのシリアライズ/デシリアライズについては既知の問題があります。Java では Calendar クラスはタイムゾーン情報を含んでいます。.NET では System.DateTime 構造はタイムゾーン情報を含んでいません。.NET Framework では、シリアライズする際にタイムゾーンを現在のタイムゾーンと仮定し、デシリアライズする際はタイムゾーンを無視します。その結果、値がプラスマイナス24時間ずれる可能性があります。

解決策として2つ、文字列を使用する、ラッパーされた値オブジェクトを使用することが挙げられます。時間の値を転送する際、秒による long 型 (昔の C における time_t) をお勧めします。

質問: Java のデータ型から .NET における同等の型へのマッピングを提供することはできますか?

回答: もちろんできます。

質問: java.lang.Integer や java.lang.Double のような標準的な Java のプリミティブ型のラッパは使用できますか?

回答: 直接は使用できません。Microsoft C# は同等の言語機能を持っていません。C# の System.Object 型を使用して対処することができます。

質問: 相互運用性を最大限高める際に、どのデータ型、あるいはどのデザインパターンを避けたらいいのでしょうか?

回答: 以下の構成を避けるべきです。

質問: Java と Microsoft .NET Framework との間で添付を送信するにはどうすればいいのでしょうか?

回答: .NET Framework 1.0 と 1.1 の両バージョンは、添付のサポートは一切提供していません。

最近のMicrosoft Web Services Enhancements (WSE)DIME (Direct Internet Message Encapsulation)のサポートを追加しています。それゆえ、DIMEをサポートするにはクライアントマシンにWSEをインストールする必要があります。

Axis は MIME と DIME 添付の両方をサポートします。サーバは両方とも扱いますが、クライアントはメッセージを送る際に DIME を使うということを伝える必要があります。

質問: Axis と Microsoft Web Services Enhancements (WSE)を使用するのに他に必要なものはありますか?

回答: Axis と共に WSE ツールキットを使うには、WS-Routingを無効にする必要があります。

これは次の呼び出しを追加することによって行えます。

_server.RequestSoapContext.Path.MustUnderstand = false;

さもなければ、Axis がWS-Routingヘッダーの認識に失敗した際にMustUnderstandを受け取ることになります。より詳しい情報は、Java & .NET Interop - How To をご覧下さい。

質問: GZIP のようなものを使用してメッセージを圧縮する組み込みのサポートはありますか?

回答: 残念ながら現在のところありません。実際、.NET Framework にも組み込みの圧縮ライブラリはありません。

http://marc.theaimsgroup.com/?l=axis-dev&m=106086909809576&w=2

質問: Microsoft .NET Framework の文書化されたWebサービスバグはありますか?

回答: はい。.NET 1.0 では以下の記事で述べられている、空配列のデシリアライズについての問題があります。

http://support.microsoft.com/default.aspx?scid=kb;en-us;330065

   <globalConfiguration>
     <parameter name="axis.sendMinimizedElements" value="false"/>
   </globalConfiguration>

質問: java.util.Map を C# に送信するお勧めの方法を教えてくれませんか?

DotNetInteropMapInfo

質問: 誰かJavaBeanのシリアライズと C# あるいは他の .Net クライアントからのアクセスについてのサンプルを提供してくれませんか? (wsdl.exe を使用して) Axis が生成した WSDL から、C# のクライアントプロキシを生成することはできたのですが、それを使用する際、プロキシがレスポンスをアンマーシャルしようとすると System.InvalidOperationException が発生します。

回答: 実際に動いている bean のサンプルについてはこちらをご覧下さい。http://www.pankaj-k.net/axis4tag/ (これは Java のみのサンプルで、質問したものとは違います)。.Net Framework 1.0 には、クライアント側で空配列がデシリアライズされる際にこの種のエラーが発生するというバグがあります。http://support.microsoft.com/default.aspx?scid=kb;en-us;330065

質問: Microsoft .NET Framework 1.0 と 1.1 の間での、Webサービスに関連する変更点のリストはありますか?

回答: はい。以下の記事をご覧下さい。

XML & Web Services Changes in .NET Framework 1.1 (.NET Framework 1.1 における XML とWebサービスの変更点)

Changes in System.web.services from .NET Framework 1.0 to 1.1 (System.web.services の、.NET Framework 1.0 から 1.1 への変更点)

資料

MSDN Web Services Developer Center (MSDN Webサービス開発者センタ)

West Wind Technologies White Papers (West Wind Technologies ホワイトペーパ)

ja/axis/DotNetInterop (last edited 2009-09-20 22:48:57 by localhost)