簡體   English   中英

使用XMLAdapter使用jaxb序列化通用字段

[英]Serializing a generic field with jaxb using XMLAdapter

我們有一個定義對象ID(UID)的類:

公共最終類UUID實現可序列化,可比較{....}

和另一類:

    @XmlType(name = "ChangeFieldValueInstruction")
    public static class ChangeFieldValueInstruction<T> extends Instruction
    {
        private T newVal;

        public ChangeFieldValueInstruction()
        {
            super();
        }

        public ChangeFieldValueInstruction(String fieldPath, T newVal)
        {
            super(fieldPath);
            setNewVal(newVal);
        }


        public T getNewVal()
        {
            return newVal;
        }

        public void setNewVal(T newVal)
        {
            this.newVal = newVal;
        }
      ................
    }

此類(UpdateObjectRequest)通過Web服務傳遞(我們使用spring)。

我有一個package-info文件,該文件為UUID.class定義了一個適配器,但是當我們將UID對象傳遞給newVal時,我們看到該適配器沒有被調用,實際上是默認的UID構造函數被調用。 我嘗試使用@XmlAnyElement注釋getNewVal()方法,並將@XmlJavaTypeAdapter也添加到UID類中(正如有人在此處建議的那樣),但仍然無法正常工作。 還嘗試在xsd中使用@XmlSeeAlso(UUID.class)BTW注釋UpdateObjectRequest,我看到newVal被定義為xs:anyType

那么,有誰知道我該怎么做? 10倍

不可能,恕我直言。

這應該如何工作? 您將擁有一個SOAP WebService有效負載的動態XML模式。 接收服務應該如何反應,他無法猜測元素的類型。

使用SOAP,Web服務及其操作,可以在WSDL-WebService定義中預定義XML類型。 客戶端和服務器可以通過這種方式進行互操作,因為它們是根據有效載荷格式(不是動態的)進行協商的。

您需要精確定義哪些消息,類型可以在ws客戶端和服務器之間傳遞

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM