#java #spring-boot
Вопрос:
Решено [исключение javax.xml.ws.WebServiceException: исключение java.lang.RuntimeException: com.sun.xml.messaging.saaj.SOAPExceptionImpl: Не удается добавить заголовок, когда он уже присутствует.]
частный статический пустотный надстройщик(базовый запрос, запрос, действие IBaseAction) { Список обработчиков = новый список массивов();
handlersList.add(new SOAPHandler<SOAPMessageContext>() {
@Override
public boolean handleMessage(SOAPMessageContext context) {
try {
Boolean outbound = (Boolean) context.get("javax.xml.ws.handler.message.outbound");
if (outbound != null amp;amp; outbound) {
final ObjectFactory objectFactory = new ObjectFactory();
final JAXBElement<BaseRequestHeader> requesterCredentials = objectFactory.createRequestHeader(requestHeader);
log.info("==================" requesterCredentials.getValue().getSecurityToken());
// obtaining marshaller which should marshal instance to xml
final Marshaller marshaller = JAXBContext.newInstance(BaseRequestHeader.class).createMarshaller();
// adding header because otherwise it's null
final SOAPEnvelope envelope = context.getMessage().getSOAPPart().getEnvelope();
SOAPHeader header = envelope.addHeader();
// marshalling instance (appending) to SOAP header's xml node
marshaller.marshal(requesterCredentials, header);
}
} catch (final Exception e) {
throw new RuntimeException(e);
}
return true;
}
@Override
public void close(MessageContext arg0) {
}
@Override
public boolean handleFault(SOAPMessageContext arg0) {
return false;
}
@Override
public Set<QName> getHeaders() {
return null;
}
});
((BindingProvider) action).getBinding().setHandlerChain(handlersList);
}
Комментарии:
1. Добро пожаловать в StackOverflow ! Пожалуйста, не могли бы вы включить короткий текст, объясняющий, что вы пытаетесь сделать ? Таким образом, мы можем в конечном итоге предложить вам другое решение, если ваш код не может быть исправлен.