JAX-WS 网络服务和@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 cannot be cast to com.sun.xml.bind.v2.model.core.EnumLeafInfo
。
因此,最有趣的是,在 Glassfish Metro 2.3.1 XmlSchemaGenerator.java
.
中 XmlSchemaGenerator.java
中抛出了异常,但 JAX-WS XmlSchemaGenerator 中没有
我的项目有很多模块,但是这个模块没有link到他的pom.xml地铁,它只有另一个模块。为什么这个问题会变成?
所以,答案很简单也很奇怪。
我所有的@XmlType 类 都在一个 java 包和一个 XML- 命名空间中。
因此,当我将包含@XmlAnyElement 的@XmlType 类 移动到另一个java 包和XML-命名空间时,但所有@XmlRootElement 类 仍然保留在第一个包和命名空间中——一切都开始运行良好。奇怪,悲伤,但真实。
P.S。我认为,这是 JAX-WS 中的一个错误。
因此,我尝试使用 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 cannot be cast to com.sun.xml.bind.v2.model.core.EnumLeafInfo
。
因此,最有趣的是,在 Glassfish Metro 2.3.1 XmlSchemaGenerator.java
.
XmlSchemaGenerator.java
中抛出了异常,但 JAX-WS XmlSchemaGenerator 中没有
我的项目有很多模块,但是这个模块没有link到他的pom.xml地铁,它只有另一个模块。为什么这个问题会变成?
所以,答案很简单也很奇怪。
我所有的@XmlType 类 都在一个 java 包和一个 XML- 命名空间中。
因此,当我将包含@XmlAnyElement 的@XmlType 类 移动到另一个java 包和XML-命名空间时,但所有@XmlRootElement 类 仍然保留在第一个包和命名空间中——一切都开始运行良好。奇怪,悲伤,但真实。
P.S。我认为,这是 JAX-WS 中的一个错误。