我有一个Web服务,客户在该服务中向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);
}
在我的日志中,我可以看到请求标头已相应设置,但是我的Web服务仍然会回答上述错误。
Liberty使用 CXF ,我们已经遇到了很多问题,因此我怀疑这在某种程度上干扰了。
server.xml中是否可能有Liberty配置?
如果需要拦截器(或某些特定于CXF的拦截器),我是否需要其他功能?因为上次尝试时出现 ClassNotFound 错误。
亲切的问候