Domanda

Sto cercando di utilizzare alcuni servizi Web .NET utilizzando JAX-WS. Ho generato le classi Java usando lo strumento wsimport. Tuttavia, quando provo a utilizzare questi servizi Web (proprietari, non pubblici) in Java, noto che la maggior parte dei metodi e delle proprietà forniti dal venditore nei loro esempi C # non sono disponibili nelle classi generate (nonostante non si siano verificati errori durante la generazione delle classi Java dal file WSDL). Anche la connessione ai servizi Web funziona sostanzialmente.

Quando ho provato a generare una classe C # usando wsdl.exe da .NET SDK, tutti i metodi sono stati generati correttamente.

Quale sarebbe il modo migliore per utilizzare i servizi Web .NET in modo tale che tutte le funzionalità siano disponibili in Java, e perché wsimport genera solo un piccolo sottoinsieme di tutti i metodi e le proprietà descritti nel file WSDL?

Esempio: nel file WSDL UserManagement.wsdl è presente uno snippet


<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 #, posso accedere a UserSecurityContext in seguito:


UserManagement userMgmt = new UserManagement();
userMgmt.UserSecurityContextValue = new SampleWS.UserRef.UserSecurityContext();
Tuttavia, in Java posso creare l'oggetto UserManagement


UserManagement userMgmt = new UserManagement();

ma l'oggetto UserManagement generato non ha alcun oggetto accessibile SecurityContext, né getter o setter per tale oggetto privato.

Altri suggerimenti

Vorrei vedere l'esempio di cui stai parlando, in quanto sembra che l'esempio invii oggetti con comportamento attraverso il filo piuttosto che solo modelli (o messaggi, se preferisci un termine SOA migliore).

Quando si invia un oggetto formattato come modello dati o messaggio, non conterrà metodi da utilizzare. E, con l'interoperabilità, non ha molto senso impostare un comportamento (metodi) per attraversare il filo.

Per quanto riguarda ciò che puoi fare, poiché stai serializzando, puoi creare i metodi comportamentali, se hanno senso dalla tua parte. Personalmente, vorrei creare il comportamento in altri oggetti e mantenere i modelli / messaggi come contenitori di stato. Ma il tuo chilometraggio può variare. ; -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top