繁体   English   中英

在Java中使用.NET Web服务的最佳方式

[英]Best way to consume .NET web services in Java

我正在尝试使用JAX-WS来使用一些.NET Web服务。 我使用wsimport工具生成了Java类。 但是,当我尝试在Java中使用这些(专有的,非公共的)Web服务时,我注意到供应商在其C#示例中提供的大多数方法和属性在生成的类中都不可用(尽管没有遇到任何错误)从WSDL文件生成Java类时)。 连接到Web服务也基本可行。

当我尝试使用.NET SDK中的wsdl.exe生成C#类时,所有方法都已正确生成。

使用.NET Web服务的最佳方式是什么,以便在Java中提供完整的功能,为什么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,也没有这种私有对象的getter或setter。

我想看看你正在谈论的例子,因为它听起来像是通过线路发送具有行为的对象而不仅仅是模型(或者如果你更喜欢更好的SOA术语的消息)。

当您发送格式化为数据模型或消息的对象时,它将不包含要使用的方法。 并且,使用互操作,设置行为(方法)以跨越线路没有多大意义。

至于你可以做什么,既然你正在进行序列化,你可以创建行为方法,如果它们对你有意义的话。 就个人而言,我会在其他对象中创建行为并将模型/消息保存为状态容器。 但是,您的里程可能会有所不同 ;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM