我正在尝试使用 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。