Я подключаюсь к внешнему 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 с атрибутами имени, но все равно та же ошибка сортировки.
Из того, что я понимаю, маршаллинг и демаршаллинг имеют отношение к преобразованию представления объекта в памяти в формат, более подходящий для преобразования.Хотя, так как все мои классы созданы, разве это не должно быть обработано для меня?
Любая помощь будет принята с благодарностью.
Спасибо