簡體   English   中英

JAX-WS Web服務和@XmlAnyElement

[英]JAX-WS webservice and @XmlAnyElement

因此,我嘗試使用Spring和JAX-WS 2.2.10編寫SOAP @WebService。

傳入函數參數的一部分如下所示:

package com.itu.messaging.regional;

import org.w3c.dom.Element;

import javax.xml.bind.annotation.*;
import java.io.Serializable;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "GenericMessagePrimaryContent", propOrder = {
    "any"
})
public class GenericMessagePrimaryContent implements Serializable {

    @XmlAnyElement
    protected Element any;

    /**
     * Gets the value of the any property.
     * 
     * @return
     *     possible object is
     *     {@link Element }
     *     
     */
    public Element getAny() {
        return any;
    }

    /**
     * Sets the value of the any property.
     * 
     * @param value
     *     allowed object is
     *     {@link Element }
     *     
     */
    public void setAny(Element value) {
        this.any = value;
    }
}

但是,當我部署代碼(並希望查看生成的WSDL)時-我遇到了以下異常: java.lang.ClassCastException: com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$26 cannot be cast to com.sun.xml.bind.v2.model.core.EnumLeafInfo

因此,最有趣的是,該異常在Glassfish Metro 2.3.1 XmlSchemaGenerator.java拋出XmlSchemaGenerator.java ,而不是JAX-WS XmlSchemaGenerator.java

我的項目有很多模塊,但是此模塊在pom.xml中沒有鏈接到Metro,它只有另一個模塊。 為什么這個問題會成為?

因此,答案既簡單又奇怪。

我所有的@XmlType類都放在一個Java包和一個XML命名空間中。

因此,當我將包含@XmlAnyElement的@XmlType類移動到另一個Java包和XML命名空間時,但是所有@XmlRootElement類仍保留在第一個包和命名空間中-都開始工作良好。 奇怪,悲傷,但真實。

PS我認為,這是JAX-WS中的錯誤。

暫無
暫無

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

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