Разрабатываю SOAP @WebService с использованием Spring и JAX-WS 2.2.10.
Приведу код класса, который описывает часть входного параметра в функцию веб-сервиса:
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) - я получаю следующий exception:
java.lang.ClassCastException: com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$26 cannot be cast to com.sun.xml.bind.v2.model.core.EnumLeafInfo.
И, что наиболее интересно, exception возникает в XmlSchemaGenerator.java, но не в JAX-WS XmlSchemaGenerator, а в Glassfish Metro 2.3.1 XmlSchemaGenerator.java. Как это вообще - загадка века.
Проект состоит из нескольких модулей (maven), однако данный модуль вообще не имеет ссылки на metro в его pom.xml, правда, надо уточнить, что есть другой модуль, который использует metro. Что это вообще такое и как такое может быть?