Java 8 :: Реализация SOAP-вызова: получение com.sun.xml.internal.bind.v2.ClassFactory Не найден конструктор по умолчанию для класса javax.activation.DataHandler - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь реализовать веб-сервис SOAP, и я сгенерировал заглушки с помощью CXF.Однако, когда я пытаюсь вызвать веб-сервис, я получаю сообщение об ошибке:

com.sun.xml.internal.bind.v2.ClassFactory Не найден конструктор по умолчанию для класса javax.activation.DataHandlerjava.lang.NoSuchMethodException: javax.activation.DataHandler. ()

Я посмотрел в XSD для файла WSDL и вот что я нашел:

<xs:complexType name="EDMSFile">
<xs:sequence>
<xs:element name="name" type="xs:string"></xs:element>
<xs:element xmlns:ns1="http://www.w3.org/2005/05/xmlmime" name="contentAsMTOM" ns1:expectedContentTypes="application/octet-stream" type="xs:base64Binary" minOccurs="0"></xs:element>
<xs:element name="contentAsBase64" type="xs:base64Binary" minOccurs="0"></xs:element>
<xs:element name="format" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

, а вВ сгенерированной заглушке EDMSFile.java (приведенной ниже) я вижу, что contentAsMTOM имеет тип DataHandler, а в XSD (выше) он имеет тип xs: base64Binary.

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "EDMSFile", propOrder = {
    "name",
    "contentAsMTOM",
    "contentAsBase64",
    "format"
})
public class EDMSFile {

    @XmlElement(required = true)
    protected String name;
    @XmlMimeType("application/octet-stream")
    protected DataHandler contentAsMTOM;
    protected byte[] contentAsBase64;
    @XmlElement(required = true)
    protected String format;


    public String getName() {
        return name;
    }


    public void setName(String value) {
        this.name = value;
    }


    public DataHandler getContentAsMTOM() {
        return contentAsMTOM;
    }


    public void setContentAsMTOM(DataHandler value) {
        this.contentAsMTOM = value;
    }


    public byte[] getContentAsBase64() {
        return contentAsBase64;
    }


    public void setContentAsBase64(byte[] value) {
        this.contentAsBase64 = value;
    }


    public String getFormat() {
        return format;
    }


    public void setFormat(String value) {
        this.format = value;
    }

}

Может ли это быть причинойконфликт?Я также знаю, что, чтобы исправить это, мне, возможно, придется написать собственный XMLAdapter.Но я ничего не понимаю о своем следующем шаге, так как я очень новичок в этом.Любая помощь приветствуется.

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...