在两个对象之间生成客户端 wsimport miss link
generate client wsimport miss link between two object
我想使用 wsimport maven 插件从 wsdl 生成客户端存根,这很好用,但有一个问题:我有两个对象应该链接在一起,但生成完成后,它并不完美
<types>
<xsd:schema elementFormDefault="qualified" targetNamespace="http://www.hello.com/ns/xsd/boba/restitution-restituerCarriereAvecValo.xsd">
<xsd:import namespace="http://www.hello.com/holla/infosRetour.xsd" schemaLocation="xsd/infosRetour.xsd"/>
<xsd:import namespace="http://www.hello.com/ns/wsdl/boba/messageRetourModuleValorisation.xsd" schemaLocation="xsd/messageRetourModuleValorisation.xsd"/>
<xsd:element name="messageIn" type="xsd:anyType"/>
<xsd:element name="messageOut">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="ir:infosRetour">
<xsd:choice>
<xsd:element name="messageRetour" type="xsd:anyType"/>
<xsd:element name="rejetControleSyntaxiqueSemantique" type="xsd:anyType"/>
<xsd:element name="rejetControleIdentification" type="xsd:anyType"/>
</xsd:choice>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
这里我的对象 messageOut
应该有一个字段 messageRetour
messageRetour
class,但是当我看到我的 class messageOut
此字段设置为对象而不是提到的 class.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"messageRetour",
"rejetControleSyntaxiqueSemantique",
"rejetControleIdentification"
})
@XmlRootElement(name = "messageOut")
public class MessageOut
extends InfosRetour
{
protected Object messageRetour;
protected Object rejetControleSyntaxiqueSemantique;
protected Object rejetControleIdentification;
正如你在这里看到的,这里是生成的子class,你可以看到有一个名为messageRetour
的class
如何将此类型更改为 CLASS 而不是对象?
即使我将这一行 <xsd:element name="messageRetour" type="xsd:anyType"/>
更改为 <xsd:element name="messageRetour"/>
我也总是遇到同样的问题 Object 而不是 class
你得到 Object
因为 xsd:anyType
作为类型。
您应该将 <xsd:element name="messageRetour" type="xsd:anyType"/>
的类型更改为 messageRetour
类型。
这种类型可能是由您导入的模式之一提供的。具体名字我不太确定,大概是MessageRetour
或者messageRetour
或者message-retour
之类的吧。所以它可能是这样的:
<xsd:element name="messageRetour" type="ir:messageRetour"/>
如果类型是由其他导入的模式提供的,您可能需要先声明一个命名空间前缀(如xmlns:mrmv="http://www.hello.com/ns/wsdl/boba/messageRetourModuleValorisation.xsd"
),然后使用mrmv:messageRetour
作为类型。
我想使用 wsimport maven 插件从 wsdl 生成客户端存根,这很好用,但有一个问题:我有两个对象应该链接在一起,但生成完成后,它并不完美
<types>
<xsd:schema elementFormDefault="qualified" targetNamespace="http://www.hello.com/ns/xsd/boba/restitution-restituerCarriereAvecValo.xsd">
<xsd:import namespace="http://www.hello.com/holla/infosRetour.xsd" schemaLocation="xsd/infosRetour.xsd"/>
<xsd:import namespace="http://www.hello.com/ns/wsdl/boba/messageRetourModuleValorisation.xsd" schemaLocation="xsd/messageRetourModuleValorisation.xsd"/>
<xsd:element name="messageIn" type="xsd:anyType"/>
<xsd:element name="messageOut">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="ir:infosRetour">
<xsd:choice>
<xsd:element name="messageRetour" type="xsd:anyType"/>
<xsd:element name="rejetControleSyntaxiqueSemantique" type="xsd:anyType"/>
<xsd:element name="rejetControleIdentification" type="xsd:anyType"/>
</xsd:choice>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
这里我的对象 messageOut
应该有一个字段 messageRetour
messageRetour
class,但是当我看到我的 class messageOut
此字段设置为对象而不是提到的 class.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"messageRetour",
"rejetControleSyntaxiqueSemantique",
"rejetControleIdentification"
})
@XmlRootElement(name = "messageOut")
public class MessageOut
extends InfosRetour
{
protected Object messageRetour;
protected Object rejetControleSyntaxiqueSemantique;
protected Object rejetControleIdentification;
正如你在这里看到的,这里是生成的子class,你可以看到有一个名为messageRetour
如何将此类型更改为 CLASS 而不是对象?
即使我将这一行 <xsd:element name="messageRetour" type="xsd:anyType"/>
更改为 <xsd:element name="messageRetour"/>
我也总是遇到同样的问题 Object 而不是 class
你得到 Object
因为 xsd:anyType
作为类型。
您应该将 <xsd:element name="messageRetour" type="xsd:anyType"/>
的类型更改为 messageRetour
类型。
这种类型可能是由您导入的模式之一提供的。具体名字我不太确定,大概是MessageRetour
或者messageRetour
或者message-retour
之类的吧。所以它可能是这样的:
<xsd:element name="messageRetour" type="ir:messageRetour"/>
如果类型是由其他导入的模式提供的,您可能需要先声明一个命名空间前缀(如xmlns:mrmv="http://www.hello.com/ns/wsdl/boba/messageRetourModuleValorisation.xsd"
),然后使用mrmv:messageRetour
作为类型。