Не получается исполнить SOAP метод из Java

Доброго времени суток!

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

Класс конфигурации :

@Configuration
public class FeedbackConfig {

    @Bean
    public Jaxb2Marshaller marshaller() {
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setContextPath(ObjectFactory.class.getPackage().getName());
        return marshaller;
    }

    @Bean
    public FeedbackClient countryClient(Jaxb2Marshaller marshaller) {
        FeedbackClient client = new FeedbackClient();
        client.setDefaultUri("http://192.168.15.65:8481/RedmineAdapter/RedmineService");
        client.setMarshaller(marshaller);
        client.setUnmarshaller(marshaller);
        System.out.println(marshaller.getContextPath());
        return client;
    }
}

Класс клиента :

   public class FeedbackClient extends WebServiceGatewaySupport {

    public void createIssueToRedmine(AddIssueReq parameter) {
        AddIssue addIssue = new AddIssue();
        addIssue.setParameter(parameter);
        AddIssueResp addIssueResp = (AddIssueResp) getWebServiceTemplate().marshalSendAndReceive(addIssue);
        System.out.println(addIssueResp.getIssueId());
    }

Класс для теста клиента :

@Component
@EnableScheduling
@AllArgsConstructor
public class TestClientComponent {
    private final FeedbackClient feedbackClient;
    private final FeedbackConfig feedbackConfig;

    @Scheduled(fixedDelay = 10000)
    public void createTest() {
        AddIssueReq req = new AddIssueReq();
        req.setId(10000);
        req.setApplicantId("2323 32323 2323");
        req.setProject("PGU");
        req.setEmail("email");
        req.setPhone("phone");
        req.setFIO("fio");
        req.setOrgName("orgName");
        req.setOrgId(1);
        req.setSubject("subject");
        req.setDescription("description");
      feedbackClient.createIssueToRedmine(req);

    }
}

SOAP метод из WSDL:

<xs:complexType name="AddIssue">
<xs:sequence>
<xs:element minOccurs="0" name="parameter" type="tns:addIssueReq"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="addIssueReq">
<xs:sequence>
<xs:element minOccurs="0" name="applicantId" type="xs:string"/>
<xs:element maxOccurs="unbounded" minOccurs="0" name="attachment" nillable="true" type="tns:formAttachment"/>
<xs:element minOccurs="0" name="description" type="xs:string"/>
<xs:element minOccurs="0" name="email" type="xs:string"/>
<xs:element minOccurs="0" name="FIO" type="xs:string"/>
<xs:element minOccurs="0" name="id" type="xs:int"/>
<xs:element minOccurs="0" name="orgId" type="xs:int"/>
<xs:element minOccurs="0" name="orgName" type="xs:string"/>
<xs:element minOccurs="0" name="phone" type="xs:string"/>
<xs:element minOccurs="0" name="project" type="xs:string"/>
<xs:element minOccurs="0" name="subject" type="xs:string"/>
</xs:sequence>
</xs:complexType>

Получаю в ответе : false - если использую wsimport. Получаю в ответе - если использую JAXB2 :

org.springframework.oxm.MarshallingFailureException: JAXB marshalling exception; nested exception is javax.xml.bind.MarshalException
 - with linked exception:
[com.sun.istack.internal.SAXException2: unable to marshal type "ru.lenobl.egov.redmine.AddIssue" as an element because it is missing an @XmlRootElement annotation]

Что я делаю неправильно ?


Ответы (0 шт):