Tengo el siguiente problema y no puedo encontrar una solución:
El WSDL tiene elementFormDefault="qualified"
, en la respuesta que recibí en mi cliente CXF todos los elementos tienen un prefijo con el espacio de nombres pero JAXB lanza una excepción
org.apache.cxf.interceptor.Fallo: error irrelevante: elemento inesperado (uri: "unm: ENTSCWS", local: "searchReturn"). Los elementos esperados son en org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall (JAXBEncoderDecoder.java:661) en org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall (JAXBEncoderDecoder.java:533) en org.apache.cxf.jaxb.io.DataReaderImpl.read (DataReaderImpl.java:128) ...
Si cambio en el WSDL elementFormDefault="unqualified"
está funcionando, pero no se me permite cambiar el WSDL, debe tener los elementos prefijados con el espacio de nombres.
El paquete-info.java contiene la anotación:
@javax.xml.bind.annotation.XmlSchema(namespace = "unm:ENTSCWS", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package entscws;
La clase de respuesta contiene la anotación:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"searchReturn"
})
@XmlRootElement(name = "searchResponse")
public class SearchResponse {
¿Tienes alguna idea de por qué me sale este error?
Respuestas
5 para la respuesta № 1¿Estás ejecutando en OSGi? He visto algunos problemas similares con paquetes de información que no se han recogido correctamente allí.
Otra opción podría ser agregar el indicador -xjc-npa al comando wsdl2java para que no use la información del paquete y pegue los espacios de nombres en todos los otros lugares.