我需要更新一个提供SOAP服务的javaEE应用程序(仍然在Java1.7中)。我想禁用wss4j (v2.0.2)用来控制应答攻击的wss4j。它创建了太多的文件,操作系统多次达到允许的最大打开文件。文件将开始显示,每个已发出并以下列方式命名的请求都有一个文件:
wss4j%002etimestamp%002ecache-e%0058ga%0058l%0058%004b%0057g%004ah%0050w==.data
文档声明可以更改TIMESTAMP_CACHE (至少我理解):
ConfigurationConstants.ENABLE_TIMESTAMP_CACHE ("enableTimestampCache"):是否缓存创建的字符串的时间戳(这些字符串仅与消息签名一起缓存)。默认值为"true“。
在客户端应用程序创建Call对象时,我发现了许多更改这些ConfigurationConstants的示例。请参见更改PASSWORD_TYPE常量的示例:
Service service = new Service();
Call call = (Call) service.createCall();
...
call.setProperty(UsernameToken.PASSWORD_TYPE, WSConstants.PASSWORD_TEXT);
call.setProperty(WSHandlerConstants.USER,"werner");但是,我的应用程序不是在客户端,而是在服务器端,到目前为止,我还没有找到更改ENABLE_TIMESTAMP_CACHE常量的方法。有什么想法吗?
发布于 2022-11-18 11:13:43
我找不到禁用时间戳缓存的方法。然而,上面描述的wss4j行为碰巧是一个错误,它不仅导致了大量打开的文件,而且导致了很多打开的线程。它已经在2.0.9版中得到了修正。升级到“更新”版本成功了。
你可以在这里找到充分的讨论推动了bug的发现。和修正了wss4j的jira
https://stackoverflow.com/questions/74446888
复制相似问题