使用 java 写入文件的权限被拒绝

Permission denied to write file using java

我创建了一个被异步调用的 REST API (.asyncApply),并且 API 正在尝试写入文件但由于我更改了所有类型的权限而导致权限被拒绝在相应的目录中。

我已经研究了很多,但没有得到任何解决方案

是否有可能是异步调用造成了问题?

PS:此问题间歇性出现。此外,我正在使用 Play-frame work 和 WSCliet 来实现 REST API.

更新 - api流程是这样的:

要求:

Document xml = play.libs.XML.fromString("<document></document>");
 ws.url(url).post(xml);

处理响应:

completionStage<Document> documentPromise =
ws.url(url).get().thenApplyAsync(r -> r.getBody(xml()));

在处理过程中,它会异步命中一些 API,而在写入文件时会出现类似

的异常
2021-05-17 12:08:03.079 +0530 [DEBUG] from com.zaxxer.hikari.pool.PoolBase:? in
                application-akka.actor.default-dispatcher-1233 - HikariPool-2 - Reset (autoCommit) on connection oracle.jdbc.driver.T4CConnection@1a8c2ee6
2021-05-17 12:08:03.145 +0530 [INFO] from utils.BulkOutputFileCreator:? in
                application-akka.actor.default-dispatcher-1233 - Exception occurred in writing file
java.io.FileNotFoundException: NF/BRO_PP/SMAPLE/outPut1234.csv (Permission denied)
    at java.io.FileOutputStream.open0(Native Method)
    at java.io.FileOutputStream.open(FileOutputStream.java:270)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
    at java.io.PrintWriter.<init>(PrintWriter.java:184)
    

https://www.suse.com/support/kb/doc/?id=000019272

这个网页终于给了我希望,我的代码没有任何问题,所以我们在部署代码的 Linux 端进行了调试。

我们从 NFS 端发现了一个非常奇怪的行为,我们的目录权限在 NFS 挂载点到我们的服务器端目录之间一直在 777 和 755 之间波动

所以我们直接从 NFS 服务器提供了 777,上述功能运行良好。

所以基本上问题是由于权限的波动而发生的。