У меня есть веб-служба, где клиент отправляет заголовок http с действием SOAP с одинарными кавычками (...; action = 'myServiceOp' ).Мы использовали традиционный Websphere сервер приложений 8, но перенесли на Websphere Liberty .Теперь Liberty не нравится эта одинарная кавычка и она отвечает
The given SOAPAction 'myServiceOp' does not match an operation.
Поэтому я решил использовать обработчик для изменения этого параметра и сделал следующее в методе handleMessage:
Map<String, List<String>> requestHeaders = (Map<String, List<String>>) ctx.get(MessageContext.HTTP_REQUEST_HEADERS);
if(requestHeaders.get("Content-Type") != null) {
List<String> cleanedContentType = requestHeaders.get("Content-Type");
String cleanedString = requestHeaders.get("Content-Type").get(0).replace("'", "");
cleanedContentType.clear();
cleanedContentType.add(cleanedString);
requestHeaders.put("Content-Type", cleanedContentType);
}
ВВ моих журналах я вижу, что заголовки запросов были установлены соответствующим образом, но мой веб-сервис все еще отвечает с вышеуказанной ошибкой.
Liberty использует CXF , и у нас уже было много проблем с этим,так что я подозреваю, что это как-то мешает.
Возможно, в файле server.xml есть конфигурация Liberty?
Если нужен перехватчик (или что-то специфичное для CXF), нужно ли мне дополнительноеособенность?Потому что я получаю ClassNotFound ошибки, когда я пытался это сделать в последний раз.
С уважением