Pergunta

Eu estou tentando consumir alguns serviços .NET Web usando JAX-WS. I geraram as classes Java usando a ferramenta wsimport. No entanto, quando tento usar esses (proprietária, não públicos) de serviços web em Java, noto que a maioria dos métodos e propriedades fornecidas pelo fornecedor em seus exemplos de C # não estão disponíveis nas classes geradas (apesar de ter não encontrou quaisquer erros ao gerar as classes Java a partir do arquivo WSDL). Conexão com os serviços web também funciona basicamente.

Quando eu tentei gerar uma classe C # usando wsdl.exe do .NET SDK, todos os métodos foram gerados corretamente.

Qual seria a melhor maneira de consumir os serviços .NET Web para que a funcionalidade completa estará disponível em Java, e por que wsimport gerar apenas um pequeno subconjunto de todos os métodos e propriedades descritas no arquivo WSDL?

Exemplo: no arquivo WSDL UserManagement.wsdl há um trecho


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

Em C #, eu posso acessar o do UserSecurityContext followingly:


UserManagement userMgmt = new UserManagement();
userMgmt.UserSecurityContextValue = new SampleWS.UserRef.UserSecurityContext();
No entanto, em Java eu ??posso criar o objeto UserManagement


UserManagement userMgmt = new UserManagement();

mas o objeto UserManagement gerado não tem qualquer objeto acessível SecurityContext, nem getters ou setters para um objeto tão privado.

Foi útil?

Outras dicas

Eu gostaria de ver o exemplo que você está falando, como parece que o exemplo envia objetos com o comportamento através do fio ao invés de modelos apenas (ou mensagens, se você preferir um termo melhor SOA).

Quando você envia um objeto que é formatada como um modelo de dados, ou mensagem, ele não irá conter métodos para uso. E, com interoperabilidade, não faz muito sentido para configurar o comportamento (métodos) para ir do outro lado do fio.

Como para o que você pode fazer, desde que você está serialização, você pode criar os métodos comportamentais, se elas fazem sentido do seu lado. Pessoalmente, gostaria de criar o comportamento em outros objetos e manter os modelos / mensagens como recipientes do estado. Mas, sua milhagem pode variar. ; -)

scroll top