4

JAX-WS を使用していくつかの .NET Web サービスを利用しようとしています。wsimport ツールを使用して Java クラスを生成しました。ただし、Java でこれらの (公開されていない独自の) Web サービスを使用しようとすると、C# の例でベンダーが提供するほとんどのメソッドとプロパティが、生成されたクラスで利用できないことに気付きました (エラーが発生していないにもかかわらず)。 WSDL ファイルから Java クラスを生成する場合)。Web サービスへの接続も基本的に機能します。

.NET SDK から wsdl.exe を使用して C# クラスを生成しようとしたところ、すべてのメソッドが適切に生成されました。

Java ですべての機能を利用できるように .NET Web サービスを利用する最善の方法は何でしょうか? wsimport が WSDL ファイルに記述されているすべてのメソッドとプロパティの小さなサブセットしか生成しないのはなぜですか?

例: WSDL ファイル UserManagement.wsdl にはスニペットがあります。


<s:schema elementFormDefault="qualified" targetNamespace="http://www.initechsystems.com/initech7/initechws/">
  <s:element name="UserSecurityContext" type="s2:UserSecurityContext"/>
  <s:complexType name="UserSecurityContext">
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="Token" type="s2:UserToken"/>
    </s:sequence>
  </s:complexType>
  <s:complexType name="UserToken">
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="Value" type="s:string"/>
    </s:sequence>
  </s:complexType>
</s:schema>

C# では、次のように UserSecurityContext にアクセスできます。


UserManagement userMgmt = new UserManagement();
userMgmt.UserSecurityContextValue = new SampleWS.UserRef.UserSecurityContext();
ただし、Java では UserManagement オブジェクトを作成できます。


UserManagement userMgmt = new UserManagement();

ただし、生成された UserManagement オブジェクトには、アクセス可能なオブジェクト SecurityContext も、そのようなプライベート オブジェクトのゲッターまたはセッターもありません。

4

2 に答える 2

2

これらのリンクはあなたに役立つかもしれません:

また。別の質問への答えが役立つかもしれません。

于 2009-03-20T23:42:13.287 に答える
1

この例では、モデル(または、より適切なSOA用語が必要な場合はメッセージ)だけでなく、動作を伴うオブジェクトをネットワーク経由で送信しているように見えるので、あなたが話している例を見たいと思います。

データモデルまたはメッセージとしてフォーマットされたオブジェクトを送信する場合、使用するメソッドは含まれません。また、相互運用機能では、ネットワークを通過する動作(メソッド)を設定することはあまり意味がありません。

何ができるかというと、シリアライズしているので、自分の側で理にかなっている場合は、動作メソッドを作成できます。個人的には、他のオブジェクトで動作を作成し、モデル/メッセージを状態コンテナーとして保持します。ただし、マイレージは異なる場合があります。;-)

于 2009-03-11T17:04:31.433 に答える