【问题标题】:Using Spring-Actuator in combination with ObjectDB将 Spring-Actuator 与 ObjectDB 结合使用
【发布时间】:2021-05-10 15:09:42
【问题描述】:

我正在使用 ObjectDB 在 Spring-Boot 中实现一个程序。为了实际使用 ObjectDB,我遵循了这种方法 https://www.objectdb.com/forum/2523,它运行良好。

但是,一旦我想使用 Spring-Actuator,就会收到以下错误:

Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.metrics.orm.jpa.HibernateMetricsAutoConfiguration': Injection of autowired dependencies failed; nested exception is com.objectdb.o.UserException: Unsupported unwrap(org.hibernate.SessionFactory.class) for EntityManagerFactory 

关于如何解决此错误的任何想法?

我使用的代码与链接中的代码完全相同。我在 pom 中添加了 Spring-Actuator,如下所示:

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

【问题讨论】:

    标签: spring-boot objectdb spring-actuator


    【解决方案1】:

    失败是因为 Spring Boot 试图解开 JPA EntityManagerFactory 以获取 Hibernate 的 SessionFactory。它正在尝试这样做,因为您在类路径上有 Hibernate(它是 spring-boot-starter-data-jpa 的依赖项)。根据 JPA 规范,unwrap 应该抛出一个PersistenceException“如果提供者不支持调用”。如果不支持 unwrap,Spring Boot 会捕获 PersistenceException。不幸的是,ObjectDB 抛出了不符合规范的com.objectdb.o.UserException。我建议将此作为 ObjectDB 错误提出。

    您可以通过从类路径中排除 Hibernate 来避免该问题。这将阻止 Spring Boot 尝试解开 Hibernate 的SessionFactory,从而防止发生 ObjectDB 错误。您可以通过在 pom.xml 中为 spring-boot-starter-data-jpa 依赖项添加排除项来做到这一点:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

    【讨论】:

    • 感谢您的报告和诊断。 ObjectDB 2.8.4 已修复为在不受支持的展开调用时抛出 PersistenceException 的实例(实际上是子类的实例,但希望它现在能按预期被捕获)。
    • 好的,谢谢!我可以确认这两种解决方案(添加排除和/或升级 ObjectDB)都有效。
    猜你喜欢
    • 2021-05-11
    • 2011-05-28
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-19
    • 2021-06-23
    • 2022-11-30
    相关资源
    最近更新 更多