Не получается исполнить 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]
Что я делаю неправильно ?