Differences between revisions 1 and 2
Revision 1 as of 2005-04-06 02:49:19
Size: 9543
Comment: Axis Wiki in Japanese
Revision 2 as of 2009-09-20 22:48:57
Size: 9581
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
'''Apache Axis 1.1 と [http://msdn.microsoft.com/library/default.asp?url=/downloads/list/netdevframework.asp Microsoft .NET Framework] 1.0/1.1 との相互運用性についての FAQ''' '''Apache Axis 1.1 と [[http://msdn.microsoft.com/library/default.asp?url=/downloads/list/netdevframework.asp|Microsoft .NET Framework]] 1.0/1.1 との相互運用性についての FAQ'''
Line 7: Line 7:
回答: 以下の単純な Java データ型が使用できます。String、boolean、byte、short、int、long、float、double。上記の型付き配列も作成することができます。標準的な Sun の[http://java.sun.com/products/javabeans/ JavaBeans] と{{{JavaBeans}}}の配列もサポートしています。 回答: 以下の単純な Java データ型が使用できます。String、boolean、byte、short、int、long、float、double。上記の型付き配列も作成することができます。標準的な Sun の[[http://java.sun.com/products/javabeans/|JavaBeans]] と{{{JavaBeans}}}の配列もサポートしています。
Line 11: Line 11:
回答: Calendar オブジェクトのシリアライズ/デシリアライズについては既知の問題があります。Java では [http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html Calendar] クラスはタイムゾーン情報を含んでいます。.NET では [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDateTimeClassTopic.asp System.DateTime] 構造はタイムゾーン情報を含んでいません。.NET Framework では、シリアライズする際にタイムゾーンを現在のタイムゾーンと仮定し、デシリアライズする際はタイムゾーンを無視します。その結果、値がプラスマイナス24時間ずれる可能性があります。 回答: Calendar オブジェクトのシリアライズ/デシリアライズについては既知の問題があります。Java では [[http://java.sun.com/j2se/1.4.2/docs/api/java/util/Calendar.html|Calendar]] クラスはタイムゾーン情報を含んでいます。.NET では [[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDateTimeClassTopic.asp|System.DateTime]] 構造はタイムゾーン情報を含んでいません。.NET Framework では、シリアライズする際にタイムゾーンを現在のタイムゾーンと仮定し、デシリアライズする際はタイムゾーンを無視します。その結果、値がプラスマイナス24時間ずれる可能性があります。
Line 20: Line 20:
 || String || string ||String ||[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemStringClassTopic.asp System.String]||
 || boolean || bool ||Boolean ||[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemBooleanClassTopic.asp System.Boolean]||
 || byte || sbyte ||-N/A- ||[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemSByteClassTopic.asp System.SByte]||
 || short || short ||Decimal ||[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemInt16ClassTopic.asp System.Int16]||
 || int || int ||Integer ||[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemInt32ClassTopic.asp System.Int32]||
 || long || long ||Long ||[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemInt64ClassTopic.asp System.Int64]||
 || float || float ||Single ||[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemSingleClassTopic.asp System.Single]||
 || double || double ||Double ||[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDoubleClassTopic.asp System.Double]||
 || String || string ||String ||[[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemStringClassTopic.asp|System.String]]||
 || boolean || bool ||Boolean ||[[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemBooleanClassTopic.asp|System.Boolean]]||
 || byte || sbyte ||-N/A- ||[[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemSByteClassTopic.asp|System.SByte]]||
 || short || short ||Decimal ||[[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemInt16ClassTopic.asp|System.Int16]]||
 || int || int ||Integer ||[[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemInt32ClassTopic.asp|System.Int32]]||
 || long || long ||Long ||[[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemInt64ClassTopic.asp|System.Int64]]||
 || float || float ||Single ||[[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemSingleClassTopic.asp|System.Single]]||
 || double || double ||Double ||[[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemDoubleClassTopic.asp|System.Double]]||
Line 31: Line 31:
回答: 直接は使用できません。Microsoft C# は同等の言語機能を持っていません。C# の [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemObjectClassTopic.asp System.Object] 型を使用して対処することができます。 回答: 直接は使用できません。Microsoft C# は同等の言語機能を持っていません。C# の [[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemObjectClassTopic.asp|System.Object]] 型を使用して対処することができます。
Line 62: Line 62:
さもなければ、Axis が{{{WS-Routing}}}ヘッダーの認識に失敗した際に{{{MustUnderstand}}}を受け取ることになります。より詳しい情報は、[http://www.anecon.com/aktuelles/Java_and_dotNet_Interoperability_HowTo.pdf Java & .NET Interop - How To] をご覧下さい。 さもなければ、Axis が{{{WS-Routing}}}ヘッダーの認識に失敗した際に{{{MustUnderstand}}}を受け取ることになります。より詳しい情報は、[[http://www.anecon.com/aktuelles/Java_and_dotNet_Interoperability_HowTo.pdf|Java & .NET Interop - How To]] をご覧下さい。
Line 90: Line 90:
[http://wiki.apache.org/ws/FrontPage/Axis/DotNetInteropMapInfo DotNetInteropMapInfo] [[http://wiki.apache.org/ws/FrontPage/Axis/DotNetInteropMapInfo|DotNetInteropMapInfo]]
Line 92: Line 92:
'''質問: 誰か{{{JavaBean}}}のシリアライズと C# あるいは他の .Net クライアントからのアクセスについてのサンプルを提供してくれませんか? (wsdl.exe を使用して) Axis が生成した WSDL から、C# のクライアントプロキシを生成することはできたのですが、それを使用する際、プロキシがレスポンスをアンマーシャルしようとすると [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemInvalidOperationExceptionClassTopic.asp System.InvalidOperationException] が発生します。''' '''質問: 誰か{{{JavaBean}}}のシリアライズと C# あるいは他の .Net クライアントからのアクセスについてのサンプルを提供してくれませんか? (wsdl.exe を使用して) Axis が生成した WSDL から、C# のクライアントプロキシを生成することはできたのですが、それを使用する際、プロキシがレスポンスをアンマーシャルしようとすると [[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemInvalidOperationExceptionClassTopic.asp|System.InvalidOperationException]] が発生します。'''
Line 100: Line 100:
[http://www.perfectxml.com/DotNet11Changes.asp XML & Web Services Changes in .NET Framework 1.1 (.NET Framework 1.1 における XML とWebサービスの変更点)] [[http://www.perfectxml.com/DotNet11Changes.asp|XML & Web Services Changes in .NET Framework 1.1 (.NET Framework 1.1 における XML とWebサービスの変更点)]]
Line 102: Line 102:
[http://msdn.microsoft.com/webservices/default.aspx?pull=/library/en-us/dnwebsrv/html/syswebserchange.asp Changes in System.web.services from .NET Framework 1.0 to 1.1 (System.web.services の、.NET Framework 1.0 から 1.1 への変更点)] [[http://msdn.microsoft.com/webservices/default.aspx?pull=/library/en-us/dnwebsrv/html/syswebserchange.asp|Changes in System.web.services from .NET Framework 1.0 to 1.1 (System.web.services の、.NET Framework 1.0 から 1.1 への変更点)]]
Line 106: Line 106:
[http://msdn.microsoft.com/webservices/ MSDN Web Services Developer Center (MSDN Webサービス開発者センタ)] [[http://msdn.microsoft.com/webservices/|MSDN Web Services Developer Center (MSDN Webサービス開発者センタ)]]
Line 108: Line 108:
[http://www.west-wind.com/articles.asp West Wind Technologies White Papers (West Wind Technologies ホワイトペーパ)] [[http://www.west-wind.com/articles.asp|West Wind Technologies White Papers (West Wind Technologies ホワイトペーパ)]]

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

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