Question

J'essaie d'utiliser certains services Web .NET à l'aide de JAX-WS. J'ai généré les classes Java à l'aide de l'outil wsimport. Cependant, lorsque j'essaie d'utiliser ces services Web (propriétaires, et non publics) en Java, je remarque que la plupart des méthodes et propriétés fournies par le fournisseur dans leurs exemples en C # ne sont pas disponibles dans les classes générées (bien qu'elles n'aient rencontré aucune erreur lors de la génération des classes Java à partir d'un fichier WSDL). La connexion aux services Web fonctionne également de manière fondamentale.

Lorsque j'ai essayé de générer une classe C # à l'aide de wsdl.exe à partir du kit de développement .NET, toutes les méthodes ont été correctement générées.

Quel serait le meilleur moyen d'utiliser les services Web .NET afin que toutes les fonctionnalités soient disponibles en Java, et pourquoi wsimport ne génère-t-il qu'un petit sous-ensemble de toutes les méthodes et propriétés décrites dans le fichier WSDL?

Exemple: dans le fichier WSDL UserManagement.wsdl, il y a un extrait


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

En C #, je peux accéder au UserSecurityContext par la suite:


UserManagement userMgmt = new UserManagement();
userMgmt.UserSecurityContextValue = new SampleWS.UserRef.UserSecurityContext();
Cependant, en Java, je peux créer l’objet UserManagement


UserManagement userMgmt = new UserManagement();

mais l'objet UserManagement généré n'a aucun objet accessible, SecurityContext, ni d'accesseur en lecture ou en règle pour un tel objet privé.

Autres conseils

J'aimerais voir l'exemple dont vous parlez, car il semblerait que l'exemple envoie des objets avec un comportement sur le fil plutôt que des modèles (ou des messages, si vous préférez un meilleur terme SOA).

Lorsque vous envoyez un objet au format de modèle de données ou de message, il ne contient aucune méthode à utiliser. Et, avec interop, il n’a pas beaucoup de sens de configurer un comportement (méthodes) pour franchir le fil.

En ce qui concerne ce que vous pouvez faire, puisque vous sérialisez, vous pouvez créer des méthodes comportementales, si elles ont un sens de votre côté. Personnellement, je créerais le comportement dans d'autres objets et conserverais les modèles / messages en tant que conteneurs d'état. Mais, votre kilométrage peut varier. ; -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top