小编Pop*_*los的帖子

Spring Security:在后台任务中使用@PreAuthorize调用方法的正确方法是什么?

我有一个用@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.我可以:

  1. 为后台任务编写一些自定义AuthenticationToken.
  2. 对假用户使用UsernamePasswordAuthenticationToken.
  3. 不要在后台任务中使用安全方法.
  4. 还要别的吗?

什么是正确的方法?

spring spring-security

6
推荐指数
1
解决办法
1822
查看次数

InitialRAMPercentage 不设置初始堆大小

我们正在 Docker 容器中使用 OpenJDK 17.0.7 运行 Java 应用程序,并使用这些参数(这些参数仅与我的问题相关):
-XX:InitialRAMPercentage=75.0 -XX:MaxRAMPercentage=75.0 -XX:MaxMetaspaceSize=1G -XX:+UseG1GC

这是 JDK Mission Control 中的一张图片,显示了应用程序如何启动:

使用 InitialRAMPercentage 运行应用程序

您可以看到提交的大小始终不一样。它最初为 3GiB,然后增长到约 6GiB。

然后我将 VM Arguments 更改为使用 Xms/Xmx 而不是 RAMPercentage:
-Xms6G -Xmx6G -XX:MaxMetaspaceSize=1G -XX:+UseG1GC

现在我看到了我期望看到的图片 - 从启动开始承诺的大小等于 6GiB: 使用 Xms/XMx 运行应用程序

这是 InitialRAMPercentage 的预期行为吗?它的工作方式不应该与 Xms 相同吗?我错过了什么吗?

java garbage-collection jvm

4
推荐指数
1
解决办法
767
查看次数

标签 统计

garbage-collection ×1

java ×1

jvm ×1

spring ×1

spring-security ×1