生成客户端wsimport两个对象之间的链接

时间:2018-03-06 10:49:13

标签: java xml xsd wsdl wsimport

我想使用wsimport maven插件从wsdl生成客户端存根,这很有效,但有一个问题:我有两个对象应该链接到更多但是afetr这一代是donne,它并不完美

<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,但是当我看到我的班级messageOut时,此字段被设置为对象而不是被提到的字段类。

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

正如你在这里看到的那样是生成的子类,你可以看到有一个名为messageRetour的类

enter image description here

我如何更改此类型作为一个类而不是作为对象?

即使我将这一行<xsd:element name="messageRetour" type="xsd:anyType"/>变为<xsd:element name="messageRetour"/>我也得到同样的问题,总是对象而不是一个类

1 个答案:

答案 0 :(得分:0)

由于Object类型,您获得xsd:anyType

您应该将<xsd:element name="messageRetour" type="xsd:anyType"/>的类型更改为messageRetour类型。

此类型可能由您导入的其中一个模式提供。我不确定具体的名称,可能是MessageRetourmessageRetourmessage-retour,类似的东西。所以它可能会像:

<xsd:element name="messageRetour" type="ir:messageRetour"/>

如果类型由其他导入的模式提供,则可能需要先声明名称空间前缀(如xmlns:mrmv="http://www.hello.com/ns/wsdl/boba/messageRetourModuleValorisation.xsd"),然后使用mrmv:messageRetour作为类型。