0

我有一个 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错误。

亲切的问候

4

0 回答 0