Невозможно выполнить маршалирование типа «java.lang.String» в качестве элемента, поскольку отсутствует аннотация @XmlRootElement - PullRequest
2 голосов
/ 08 апреля 2019

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

[com.sun.istack.internal.SAXException2: unable to marshal type "java.lang.String" as an element because it is missing an @XmlRootElement annotation]

, и это, кажется, исходит из строки:

Исключение в потоке "main" javax.xml.bind.MarshalException - со связанным исключением: [com.sun.istack.internal.SAXException2: невозможно маршалировать тип «java.lang.String» в качестве элемента, поскольку в нем отсутствует аннотация @XmlRootElement] в com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write (MarshallerImpl.java:311) в com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.marshal (MarshallerImpl.java:236) в javax.xml.bind.helpers.AbstractMarshallerImpl.marshal (AbstractMarshallerImpl.java:95) в DVSClient.main (DVSClient.java:59) Причина: com.sun.istack.internal.SAXException2: невозможно маршалировать тип «java.lang.String» как элементпотому что в нем отсутствует аннотация @XmlRootElement в com.sun.xml.internal.bind.v2.runtime.XMLSerializer.reportError (XMLSerializer.java:234) в com.sun.xml.internal.bind.v2.runtime.LeafBeanInfoImpl.serializeRoot (LeafBeanInfoImpl.java:127) в com.sun.xml.internal.bind.v2.runtime.property.SingleReferenceNodeProperty.serializeBody (SingleReferenceNodeProperty.java:100) в com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody (ClassBeanInfoImpl.java:345) в com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeBody (ClassBeanInfoImpl.java:336) в com.sun.xml.internal.bind.v2.runtimeInfoBl.serializeBody (ClassBeanInfoImpl.java:336) в com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsSoleContent (XMLSerializer.java:578) в com.sun.xml.internal.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot (ClassBeanInfoImpl.java:326) в com.sun.xml.internal.bind.v2.runtime.XMLSerializer.childAsRoot (XMLSerializer.java:479) в com.sun.xml.internal.bind.v2.runtime.MarshallerImpl.write (MarshallerImpl.java:308) Цитата

Мой основной код выглядит следующим образом:

public class Client {

public static void main(String[] args) throws MalformedURLException, ClassNotFoundException, IllegalAccessException, InstantiationException {


    URL UrlString = new URL("https://example.com.au:19443/Bus/exampleservice.svc?wsdl");
    String url02 = "https://example.com.au:19443/Bus/exampleservice.svc?wsdl";

    //Qname contains target namespace and name (port)
    QName qname = new QName("http://example/Contract/Service/Manager", "VerificationServiceBus", "Https");
    QName port = new QName("http://example/Contract/Service/Manager","DefaultSOAP11Binding_IVerification","Https");
    QName portName = new QName("Https");
    String serviceName = "VerificationServiceBus";
    CertificateRequest certificate = (new TestData()).test();
    URL newEndpoint = new URL("https://example.com.au:19443:19443/Bus/VerificationServiceBus.svc?");
    Service service = Service.create(UrlString, qname);

    try {

        IVerification myProxy = service.getPort(port,IVerification.class);

        VerificationResponse response = myProxy.verifyDocument(birthCertificate);
        System.out.println(response.getVerificationResultCode());

    }
    catch (IVerificationVerifyDocumentUnauthorizedAccessExceptionFaultFaultMessage ex) {
        System.out.println(ex.getMessage());

    }
}

}

Я пытался вручную войти в некоторые изклассы и добавление @XMLRootElement в классs с атрибутами имени, но все равно та же ошибка сортировки.

Из того, что я понимаю, маршаллинг и демаршаллинг имеют отношение к преобразованию представления объекта в памяти в формат, более подходящий для преобразования.Хотя, так как все мои классы созданы, разве это не должно быть обработано для меня?

Любая помощь будет принята с благодарностью.

Спасибо

...