You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ws.apache.org by Apache Wiki <wi...@apache.org> on 2005/04/06 04:49:19 UTC
[Ws Wiki] Update of "ja/axis/DotNetInterop" by ToshiyukiKimura
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Ws Wiki" for change notification.
The following page has been changed by ToshiyukiKimura:
http://wiki.apache.org/ws/ja/axis/DotNetInterop
The comment on the change is:
Axis Wiki in Japanese
New page:
##language:ja
'''Apache Axis 1.1 と [http://msdn.microsoft.com/library/default.asp?url=/downloads/list/netdevframework.asp Microsoft .NET Framework] 1.0/1.1 との相互運用性についての FAQ'''
'''質問: Java と Microsoft .NET Framework との間は、どのデータ型が安全に使用することができますか?'''
回答: 以下の単純な Java データ型が使用できます。String、boolean、byte、short、int、long、float、double。上記の型付き配列も作成することができます。標準的な Sun の[http://java.sun.com/products/javabeans/ JavaBeans] と{{{JavaBeans}}}の配列もサポートしています。
'''質問: java.util.Calendar の値は転送できますか?'''
回答: 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時間ずれる可能性があります。
解決策として2つ、文字列を使用する、ラッパーされた値オブジェクトを使用することが挙げられます。時間の値を転送する際、秒による long 型 (昔の C における time_t) をお勧めします。
'''質問: Java のデータ型から .NET における同等の型へのマッピングを提供することはできますか?'''
回答: もちろんできます。
|| Java || C#.NET || VB.NET || .NET Framework Type||
|| 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]||
'''質問: java.lang.Integer や java.lang.Double のような標準的な Java のプリミティブ型のラッパは使用できますか?'''
回答: 直接は使用できません。Microsoft C# は同等の言語機能を持っていません。C# の [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemObjectClassTopic.asp 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}}}を受け取ることになります。より詳しい情報は、[http://www.anecon.com/aktuelles/Java_and_dotNet_Interoperability_HowTo.pdf 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# に送信するお勧めの方法を教えてくれませんか?'''
[http://wiki.apache.org/ws/FrontPage/Axis/DotNetInteropMapInfo DotNetInteropMapInfo]
'''質問: 誰か{{{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] が発生します。'''
回答: 実際に動いている 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サービスに関連する変更点のリストはありますか?'''
回答: はい。以下の記事をご覧下さい。
[http://www.perfectxml.com/DotNet11Changes.asp XML & Web Services Changes in .NET Framework 1.1 (.NET Framework 1.1 における XML とWebサービスの変更点)]
[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/ MSDN Web Services Developer Center (MSDN Webサービス開発者センタ)]
[http://www.west-wind.com/articles.asp West Wind Technologies White Papers (West Wind Technologies ホワイトペーパ)]