WebServices - Axis

WebServices - Axis - FAQ/Wiki

[翻訳者注: このページは FAQ/Wiki ページを静的に翻訳したものです。最新の内容につきましては本家 FAQ/Wiki をご覧下さい。]

相互運用性

  1. [その他の JAX-RPC 実装との相互運用性は?] [編集日時 2003年4月24日pm4:51 版]

    その他の JAX-RPC 実装との相互運用性は?

    その他の Java による [JAX-RPC] 仕様の実装は、Axis と必ず相互運用できるはずです。なぜなら Axis のデータ型と相手のデータ型に単純な1対1マッピングがあり、また、JAX-RPC 準拠テストはそのプロセスに余分なテストを追加しているからです。

    Axis は JAX-RPC が扱っていない多くのデータ型 (符号無し型、マップなど) をシリアライズすることに注意してください。JAX-RPC 仕様で扱っているデータ型のみ相互運用が保証されています。

    さらに、Axis は [DIME]SwA の両方をサポートしています。クライアント側では SwAを、サーバ側ではどちらかを扱うことがデフォルトとなっています。JAX-RPC はSwA のサポートのみを命じているので、添付の際は SwA を私用する必要があります。


  2. [Microsoft .NET Framework との相互運用性は?] [編集日時 2004年1月22日am9:25 版]

    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 の[JavaBeans] と JavaBeans の配列もサポートしています。

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

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

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

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

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

       Java	      C#.NET     VB.NET      .NET Framework Type
       String     string     String      [System.String]
       boolean    bool       Boolean     [System.Boolean]
       byte	      sbyte      -N/A-       [System.SByte]
       short      short      Decimal     [System.Int16]
       int 	      int        Integer     [System.Int32]
       long       long       Long        [System.Int64]
       float      float      Single      [System.Single]
       double     double     Double      [System.Double]
    

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

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

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

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

          * 標準的な Java Collection クラス。
          * 型安全な列挙型。代わりに Java で static final な変数を使用してください。
          * 多次元配列とぎざぎざの配列。
          * まばらな配列 (SOAP 1.1 では許されているが SOAP 1.2 では許されていない)。
          * Java の char データ型はサポートされていません(XML Schema では省略されているので)。
          * Webサービス上で同じメソッド名を様々なパラメータで複数回使用するのは避けましょう。
    

    質問: 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 では以下の記事で述べられている、空配列のデシリアライズについての問題があります。

       バグ: Webサービスがサイズ0の配列を返す際に間違った結果が生じる
    http://support.microsoft.com/default.aspx?scid=kb;en-us;330065
    
       このバグは .NET 1.1 リリースで直されました。
    
       Axis 1.1RC2 でこの問題を対処するには、WSDD ファイルに以下の項目を追加します。
    
       <globalConfiguration>
         <parameter name="axis.sendMinimizedElements" value="false"/>
       </globalConfiguration>
    
       .NET 1.0 クライアントをサポートしなくてはいけない時のみ、このオプションを有効にすることをお勧めします。
    

    質問: 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 ホワイトペーパ)]


  3. [Microsoft .NET Compact Framework との相互運用性は?] [編集日時 2003年4月24日pm4:54 版]

    Microsoft .NET Compact Framework との相互運用性は?

    .NET Compact Framework は様々な Windows CE デバイスのための、.NET の縮小版です。

    このバージョンはクッキーをサポートしません。ですから Axis のクッキーに基づくセッション機構は働きません。


  4. [相互運用性に関する記事へのリンク] [編集日時 2004年1月23日am2:18 版]

    相互運用性に関する記事へのリンク

    1. 哲学的な対立がWebサービスの採択に打撃を与える: http://www.mcdonaldbradley.com/news/articles/2003/dev_channel_mike_daconta.pdf
    2. 無限へ、さらにそれを越えて - SOAP 相互運用への探求: http://www.intertwingly.net/stories/2002/02/01/toInfinityAndBeyondTheQuestForSoapInteroperability.html
    3. 相互運用性の驚くべき呪い: http://www.iseran.com/Steve/papers/interop/