Frage

Ich versuche, einige .NET Web Services mit JAX-WS zu konsumieren. Ich habe die Java-Klassen mit dem wsimport Tool generiert. Allerdings, wenn ich versuchen, diese zu verwenden (proprietäre, nicht öffentlich) Web Services in Java, merke ich, dass die meisten Methoden und durch den Anbieter in ihren C # Beispiele bereitgestellt Eigenschaften in den generierten Klassen nicht verfügbar sind (trotz keine Fehler aufgetreten sind zu haben bei der Generierung der Java-Klassen aus WSDL-Datei). Anschluss an die Web-Services auch grundsätzlich funktioniert.

Als ich versuchte, wurden eine C # Klasse mit wsdl.exe aus dem .NET SDK, alle Methoden richtig erzeugt zu erzeugen.

Was ist der beste Weg sei, um den .NET-Web-Service zu verbrauchen, so dass die volle Funktionalität in Java zur Verfügung stehen würde, und warum wsimport generiert nur eine kleine Teilmenge aller Methoden und in der WSDL-Datei beschriebenen Eigenschaften?

Beispiel: in der WSDL-Datei UserManagement.wsdl gibt es einen Code-Schnipsel


<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>

In C # kann ich die die UserSecurityContext zugreifen followingly:


UserManagement userMgmt = new UserManagement();
userMgmt.UserSecurityContextValue = new SampleWS.UserRef.UserSecurityContext();
Doch in Java kann ich das Usermanagement-Objekt erstellen


UserManagement userMgmt = new UserManagement();

aber das erzeugte Objekt Usermanagement hat keine zugänglichen Objekt Security, noch Getter oder Setter für ein solches privates Objekt.

Andere Tipps

Ich mochte das Beispiel sehen, über Sie sprechen, wie es klingt wie das Beispiel Objekte mit Verhalten über den Draht sendet nicht nur Modelle (oder Nachrichten, wenn Sie einen besseren SOA Begriff bevorzugen würden).

Wenn Sie ein Objekt senden, die als Datenmodell formated wird, oder eine Nachricht, wird es nicht Methoden enthalten zu verwenden. Und mit Interop, macht es nicht viel Sinn machen, Verhalten einzurichten (Methoden) über den Draht zu gehen.

Wie für das, was Sie tun können, da Sie die Serialisierung, können Sie die Verhaltensmethoden erstellen, wenn sie Sinn auf Ihrer Seite machen. Persönlich würde ich das Verhalten in anderen Objekten erstellen und halten die Modelle / Nachrichten als Zustand Container. Aber die Leistung kann variieren. ; -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top