我有一个用@PreAuthorize保护的方法
@PreAuthorize("hasRole('ROLE_ADMIN') and (#action.userId != principal.id)")
public void execute(EditAction action)
Run Code Online (Sandbox Code Playgroud)
现在我需要从后台任务中调用此方法.如果我只是运行此代码 - 我捕获一个异常:
AuthenticationCredentialsNotFoundException:在SecurityContext中找不到Authentication对象
好像,我需要将任何身份验证设置为SecurityContext.我可以:
什么是正确的方法?
我们正在 Docker 容器中使用 OpenJDK 17.0.7 运行 Java 应用程序,并使用这些参数(这些参数仅与我的问题相关):
-XX:InitialRAMPercentage=75.0 -XX:MaxRAMPercentage=75.0 -XX:MaxMetaspaceSize=1G -XX:+UseG1GC
这是 JDK Mission Control 中的一张图片,显示了应用程序如何启动:
您可以看到提交的大小始终不一样。它最初为 3GiB,然后增长到约 6GiB。
然后我将 VM Arguments 更改为使用 Xms/Xmx 而不是 RAMPercentage:
-Xms6G -Xmx6G -XX:MaxMetaspaceSize=1G -XX:+UseG1GC
现在我看到了我期望看到的图片 - 从启动开始承诺的大小等于 6GiB:
这是 InitialRAMPercentage 的预期行为吗?它的工作方式不应该与 Xms 相同吗?我错过了什么吗?