我有一个 Web 服务,客户在其中发送带有带单引号的 SOAP 操作的 http 标头 (...; 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);
}
在我的日志中,我可以看到请求标头已相应设置,但我的 Web 服务仍然会出现上述错误。
Liberty 使用CXF,我们已经遇到了很多问题,所以我怀疑这会以某种方式干扰。
server.xml 中是否有 Liberty 配置?
如果需要拦截器(或特定于 CXF 的东西),我是否需要额外的功能?因为我上次尝试时遇到ClassNotFound错误。
亲切的问候