2017-11-27 20 views
1

私は、次のJavaクラスがあります。私は、SOAPリクエストを作成し、にトップレベルをモーフィングできるようにしたいクラスをデプロイした後XMLスキーマが検証されないのはなぜですか?

public class input{ 

@XmlElement(namespace="http://www.example.com/TopLevel") 
public TopLevel TopLevel; 
} 

public class TopLevel{ 
    private String attribute; 

    public void setAttribute(String attribute) { 
     this.attribute = attribute; 
    } 

    public String getAttribute() { 
     return attribute; 
    } 
} 

import javax.xml.bind.annotation.XmlType; 

@XmlType(namespace="http://org.classes.SubClass", name="SubClass") 
public class SubClass extends TopLevel { 
    private String attribute2; 

    public String getAttribute2() { 
     return attribute2; 
    } 

    public void setAttribute2(String attribute2) { 
     this.attribute2 = attribute2; 
    } 
} 

をXMLのSubClass私の要求は、次のようななります

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
... xmlns:top1="http://www.example.com/TopLevel" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <top:TopSubClass_TestRequest> 
     <par:input> 
      <input> 
       <top1:toplevel xsi:type="ns5:subclass" xmlns:ns5="http://org.classes.SubClass"> 
        <attribute2>test</attribute2> 
       </top1:toplevel> 
      </input> 
     </par:input> 
     </top:TopSubClass_TestRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

私は期待していどのようなサブクラスがトップレベルにマッピングされるということであり、私は、これは検証しません何らかの理由でまだattribute2を使用することができるだろう。要求内で定義されていないように見える名前空間を気にしないでください。要求をより簡単に読むことができるように、それらをスキップしました。検証トラブルはラインで発生します。

<top1:toplevel xsi:type="ns5:subclass" xmlns:ns5="http://org.classes.SubClass">

は言う:

Invalid xsi:type qname: 'subclass' in element Input

誰もが私が間違っているの何で私を指すことができますか?すべての例によると、これを処理する方法であるとわかった。

答えて

0

私は私の問題の解決策を見つけました。 私はIBM ODMを使用しています。すべてのクラスに名前空間が定義されていても、オブジェクトが入力オブジェクトに定義されていない限り、ODMは名前空間をWSDLにインポートしません。

したがって、私は追加する必要:

@XmlType(namespace = "Some namespace") 
public class Input() { 
    public TopLevel topLevel; 
    public SubClass subClass; 
} 
をして @XmlTypeアノテーションでトップレベルクラスとサブクラスに注釈を付けます。

関連する問題