Ошибка при использовании WS без SSL
Я пытаюсь использовать сервис, который не нуждается в сертификате. Он получает только имя пользователя и пароль в качестве свойства запроса. Я использую плагин maven-jaxb2-plugin для генерации кода. Я попытался скопировать, используя следующие команды:
mvn generate-sources -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true
а также
mvn generate-sources
Но я получил следующую ошибку:
org.springframework.ws.client.WebServiceIOException: I/O error: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Это мой метод настройки:
@Bean
Jaxb2Marshaller jaxb2Marshaller() {
Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller();
jaxb2Marshaller.setPackagesToScan("ce.gov.s2gpr.compras.licita.business.model.service.bean");
return jaxb2Marshaller;
}
@Bean
public WebServiceTemplate webServiceTemplate() {
WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
webServiceTemplate.setMarshaller(jaxb2Marshaller());
webServiceTemplate.setUnmarshaller(jaxb2Marshaller());
webServiceTemplate.setDefaultUri(defaultUri);
webServiceTemplate.setMessageSender(webServiceMessageSender());
return webServiceTemplate;
}
@Bean
public WebServiceMessageSender webServiceMessageSender() {
HttpComponentsMessageSender httpComponentsMessageSender = new HttpComponentsMessageSender();
// timeout for creating a connection
httpComponentsMessageSender.setConnectionTimeout(timeout);
// when you have a connection, timeout the read blocks for
httpComponentsMessageSender.setReadTimeout(timeout);
httpComponentsMessageSender.setCredentials(new UsernamePasswordCredentials(userName, userPassword));
return httpComponentsMessageSender;
}
Это мой метод, который использует сервис:
@SuppressWarnings("unchecked")
public AtualizacaoItensGruposResponse testeSoap(PgeTO dto) {
ObjectFactory factory = new ObjectFactory();
AtualizacaoItensGrupos itens = factory.createAtualizacaoItensGrupos();
itens.setArg0(dto);
JAXBElement<AtualizacaoItensGrupos> request = factory.createAtualizacaoItensGrupos(itens);
try {
// webServiceTemplate.marshalSendAndReceive(request);
webServiceTemplate.marshalSendAndReceive(itens);
return null;
} catch (Exception e) {
log.error(e.getMessage());
}
}