Mám nasledujúci problém a nemôžem nájsť riešenie:
WSDL má elementFormDefault="qualified"
, v odpovedi, ktorú dostávam v mojom CXF klientovi, sú všetky elementy predponené menným priestorom, ale JAXB hodí výnimku
org.apache.cxf.interceptor.Chyba: Unmarshalling Chyba: neočakávaný element (uri: "unm: ENTSCWS", lokálny: "searchReturn"). Očakávané prvky sú na org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall (JAXBEncoderDecoder.java:661) na org.apache.cxf.jaxb.JAXBEncoderDecoder.unmarshall (JAXBEncoderDecoder.java:533) na org.apache.cxf.jaxb.io.DataReaderImpl.read (DataReaderImpl.java:128) ...
Ak zmením WSDL elementFormDefault="unqualified"
funguje, ale nemôžem zmeniť WSDL, mal by mať prvky predponené menným priestorom.
Balík-info.java obsahuje anotáciu:
@javax.xml.bind.annotation.XmlSchema(namespace = "unm:ENTSCWS", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package entscws;
Trieda odpovede obsahuje anotáciu:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"searchReturn"
})
@XmlRootElement(name = "searchResponse")
public class SearchResponse {
Máte predstavu, prečo som túto chybu?
odpovede:
5 pre odpoveď č. 1Ste v OSGi? Videl som niektoré podobné problémy s balíčkom-info nie je správne vyzdvihnúť tam.
Ďalšou možnosťou by mohlo byť pridanie príznaku -xjc-npa do príkazu wsdl2java, aby sa vôbec nepoužili informácie o balíku a držali menné priestory na všetkých ostatných miestach.