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