Эта ошибка возникает из-за пользовательской реализации Map класса RequestContext.java, сделанной в библиотеке jaxws-rt (версия 2.1.4).Реализация пользовательской карты имеет механизм Fallback, который, когда переменная "mapView.fallbackMap" имеет значение null, заголовок "soapAction" очищается в цикле forback.Проверьте фрагмент кода:
/**
* Fill a {@link Packet} with values of this {@link RequestContext}.
*/
public void fill(Packet packet) {
if(mapView.fallbackMap==null) {
if (endpointAddress != null)
packet.endpointAddress = endpointAddress;
packet.contentNegotiation = contentNegotiation;
if (soapAction != null) {
packet.soapAction = soapAction;
}
if(!others.isEmpty()) {
packet.invocationProperties.putAll(others);
//if it is not standard property it deafults to Scope.HANDLER
packet.getHandlerScopePropertyNames(false).addAll(others.keySet());
}
} else {
Set<String> handlerScopePropertyNames = new HashSet<String>();
// fallback mode, simply copy map in a slow way
for (Entry<String,Object> entry : mapView.fallbackMap.entrySet()) {
String key = entry.getKey();
if(packet.supports(key))
packet.put(key,entry.getValue());
else
packet.invocationProperties.put(key,entry.getValue());
//if it is not standard property it deafults to Scope.HANDLER
if(!super.supports(key)) {
handlerScopePropertyNames.add(key);
}
}
if(!handlerScopePropertyNames.isEmpty())
packet.getHandlerScopePropertyNames(false).addAll(handlerScopePropertyNames);
}
}
Дополнительно, переменная "mapView.fallbackMap" заполняется каждый раз, когда создается метод из Map, не поддерживаемый пользовательской реализацией, например, размер "entrySet" или "size"метод.Поэтому каждый раз, когда мы вызываем операцию «Наблюдать» или «Оценивать» для отладки RequestContext в IntelliJ IDEA, запасной вариант заполняется без вызова SOAP.
Таким образом, решение не использует для отладки RequestContext перед вызовом SOAPили обязательно удалите следующее свойство перед выполнением запроса:
((BindingProvider) service).getRequestContext().remove("javax.xml.ws.soap.http.soapaction.uri")