小编joh*_*inp的帖子

在内部服务中捕获 AccessDeniedException 时防止事务回滚

我有 2 项服务:RecentRecordServiceBookService​​ 。

@Service
public class RecentRecordService {
    @Transactional
    public List<Book> getRecentReadBooks() {
        List<Long> recentReadBookIds = getRecentReadBookIds();
        List<Book> recentReadBooks = new ArrayList<>();

        for (Long bookId : recentReadBookIds) {
            try {
                Book book = bookService.getBook(bookId);
                recentReadBooks.add(book);
            } catch (AccessDeniedException e) {
                // skip
            }
        }

        return recentReadBooks;
    }
}
Run Code Online (Sandbox Code Playgroud)
@Service
public class BookService {
    @Transactional
    public Book getBook(Long bookId) {
        Book book = bookDao.get(bookId);
        if (!hasReadPermission(book)) {
            throw new AccessDeniedException(); // spring-security exception
        }
        return book; …
Run Code Online (Sandbox Code Playgroud)

java spring hibernate spring-transactions

5
推荐指数
1
解决办法
1991
查看次数

如何在 Maven Release Plugin 中使用“projectVersionPolicyId”?

projectVersionPolicyIdMaven Release Plugin 的许多 mojo 中都有一个参数,例如http://maven.apache.org/maven-release/maven-release-plugin/prepare-mojo.html#projectVersionPolicyId。但是,他们似乎没有提供我如何使用它的示例。

当我尝试:

$ mvn --batch-mode release:prepare -DprojectVersionPolicyId=foo
Run Code Online (Sandbox Code Playgroud)

它显示一个错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:3.0.0-M1:prepare (default-cli) on project maven-release-test: Policy 'foo' is unknown, available: [default] -> [Help 1]
Run Code Online (Sandbox Code Playgroud)

看起来只有 1 个可用策略(即default)。有没有办法添加更多可能的策略?

java maven-plugin maven maven-release-plugin

5
推荐指数
1
解决办法
254
查看次数

systemd 如何自动插入内核模块?

我试图找出内核模块是如何自动插入的。我正在使用 Arch Linux,所以基本上我正在使用systemd.

经过一番研究,我知道至少有两种方法可以插入内核模块:

  1. systemd有一个名为 的单元systemd-modules-load.service,它读取/etc/modules-load.d/*.conf(以及 和 中的/run内核模块名称/usr/lib)(systemd 文档)。

  2. udev当检测到设备时可以自动处理内核模块(Arch Linux wiki 页面)。

但是,我没能看到它们是如何工作的:

  1. /etc/modules-load.d/*.conf我的系统上(或 或/run)中没有配置文件/usr/lib。因此它没有什么可加载的systemd-modules-load.service

  2. 中有一些modprobe命令/usr/lib/udev/rules.d,但不是我在 中看到的所有内核模块lsmod

例如,我xfs在 的输出中有一个内核模块lsmod,但我找不到插入它的触发点。我的文件系统都没有安装xfscat /proc/mounts | grep xfs什么也不显示)。

有没有关于这一切如何运作的介绍或教程?

udev kernel-module archlinux systemd

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