有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JAXWS webservice和@XmlAnyElement

所以,我尝试用Spring和JAX-WS2.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

我的项目有很多模块,但这个模块在他的pom中没有到metro的链接。xml,它只有另一个模块。为什么这个问题会变成


共 (1) 个答案

  1. # 1 楼答案

    所以,答案既简单又奇怪

    我所有的@XmlType类都在一个java包和一个XML名称空间中

    所以,当我将@XmlType类(其中包含@xmlanyement)移动到另一个java包和XML名称空间时,所有@XmlRootElement类仍然保留在第一个包和名称空间中,所有这些类都开始正常工作。奇怪,悲伤,但真实

    另外,我认为这是JAX-WS中的一个缺陷