Прием данных в ML через SpringBoot - PullRequest
0 голосов
/ 06 апреля 2020

Я создал Bean, который является составным bean-компонентом (содержит экземпляры других bean-компонентов). Объявлен с помощью нотации, так что он обрабатывает данные объекта как xml data. Ниже bean-компонент villageInvigilator содержит объекты person, user и address. У меня есть объявил эти классы с аннотациями xml (xml привязка). Теперь я пытаюсь отправить данные xml через вызов post rest, чтобы сбросить данные в ML, но это не удалось из-за ошибки ниже. Может кто-нибудь помочь мне, что пошло не так в приведенном ниже коде.


com.sun.jersey.api.client.ClientHandlerException: A message body writer for Java class com.sun.jersey.multipart.MultiPart, and Java type class com.sun.jersey.multipart.MultiPart, and MIME media type multipart/mixed; boundary=Boundary_2_1591997445_1586182536010 was not found
    at com.sun.jersey.api.client.RequestWriter$RequestEntityWriterImpl.<init>(RequestWriter.java:199) ~[jersey-client-1.19.4.jar:1.19.4]
    at com.sun.jersey.api.client.RequestWriter.getRequestEntityWriter(RequestWriter.java:248) ~[jersey-client-1.19.4.jar:1.19.4]
    at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.getHttpEntity(ApacheHttpClient4Handler.java:241) ~[jersey-apache-client4-1.17.jar:1.17]
    at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.getUriHttpRequest(ApacheHttpClient4Handler.java:197) ~[jersey-apache-client4-1.17.jar:1.17]
    at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:153) ~[jersey-apache-client4-1.17.jar:1.17]
    at com.marklogic.client.impl.DigestChallengeFilter.handle(DigestChallengeFilter.java:34) ~[marklogic-client-api-4.0.1.jar:na]
    at com.sun.jersey.api.client.filter.HTTPDigestAuthFilter.handle(HTTPDigestAuthFilter.java:494) ~[jersey-client-1.19.4.jar:1.19.4]
    at com.sun.jersey.api.client.Client.handle(Client.java:652) ~[jersey-client-1.19.4.jar:1.19.4]
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) ~[jersey-client-1.19.4.jar:1.19.4]
    at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74) ~[jersey-client-1.19.4.jar:1.19.4]
    at com.sun.jersey.api.client.WebResource$Builder.put(WebResource.java:539) ~[jersey-client-1.19.4.jar:1.19.4]
    at com.marklogic.client.impl.JerseyServices.putPostDocumentImpl(JerseyServices.java:1503) ~[marklogic-client-api-4.0.1.jar:na]
    at com.marklogic.client.impl.JerseyServices.putDocument(JerseyServices.java:1199) ~[marklogic-client-api-4.0.1.jar:na]
    at com.marklogic.client.impl.DocumentManagerImpl.write(DocumentManagerImpl.java:919) ~[marklogic-client-api-4.0.1.jar:na]
    at com.marklogic.client.impl.DocumentManagerImpl.write(DocumentManagerImpl.java:757) ~[marklogic-client-api-4.0.1.jar:na]
    at com.marklogic.client.impl.DocumentManagerImpl.write(DocumentManagerImpl.java:701) ~[marklogic-client-api-4.0.1.jar:na]
    at com.kc.serviceImplementation.VillageInspectorOperationsImpl.villageInspectorRegistration(VillageInspectorOperationsImpl.java:112) ~[classes/:na]
    at com.kc.web.VillageInspectorRESTController.createUser(VillageInspectorRESTController.java:37) ~[classes/:na]


package com.kissan.datatypes;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = "villageInspector")
public class VillageInspector {

    private String id;
    private Person person;
    private User user;
    private Address address;

    public VillageInspector() {

    }

    public VillageInspector(String id, Person person, User user, Address address) {
        super();
        this.id = id;
        this.person = person;
        this.user = user;
        this.address = address;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    @XmlAttribute
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Person getPerson() {
        return person;
    }

    public void setPerson(Person person) {
        this.person = person;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

}


Код реализации:

public void villageInspectorRegistration(VillageInspector villageInspector) {
        // TODO Auto-generated method stub
        DocumentMetadataHandle metadata = new DocumentMetadataHandle();
        List<String> str = new ArrayList<String>();
        str.add("villageInspectors");
        metadata.getCollections().addAll(str);

        JAXBHandle<VillageInspector> contentHandle = getUserDetailsHandle();
        contentHandle.set(villageInspector);
        xmlDocumentManager.write(commonUtils.getDocId(villageInspector.getId(),objectType), metadata, contentHandle);


    }


private JAXBHandle<VillageInspector> getUserDetailsHandle() {
        try {
            JAXBContext context = JAXBContext.newInstance(VillageInspector.class);
            return new JAXBHandle<VillageInspector>(context);
        } catch (JAXBException e) {
            throw new RuntimeException("Unable to create Village Inspector JAXB context", e);
        }
    }
...