首页 > 解决方案 > 使用 hibernate-orm-modules 使用更新的 Hibernate 时,如何在 Wildfly 11 上重新激活 infinispan?

问题描述

按照这个 jboss 指南将更新的休眠版本并行安装到 WF11 中。鉴于最后几句话:

使用这些模块时,您将放弃应用程序服务器通常自动化的一些集成。

例如,在使用默认的 Hibernate ORM 模块时,启用 Infinispan 二级缓存非常简单,因为 WildFly 会自动设置对 Infinispan 和集群组件的依赖关系。当使用这些自定义模块时,这种集成将不再自动工作:您仍然可以启用所有通常可用的功能,但这些需要显式配置,就像您在不同的容器中运行 Hibernate,或者在没有容器中运行一样。

我调整了 jboss-deployment-structure 以明确要求 infinispan 作为

<jboss-deployment-structure>
    <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
        <!-- This corresponds to the top level deployment. For a war this is the war's module, for an ear -->
        <!-- This is the top level ear module, which contains all the classes in the EAR's lib folder     -->
        <deployment>
            <dependencies>
                <module name="org.hibernate.infinispan" services="import" slot="${version.org.hibernate}"/>
            </dependencies>
        </deployment>
        <sub-deployment name="some-report-service-${project.version}.war">
            <exclusions>
                <module name="org.jboss.resteasy.resteasy-jackson2-provider"/>
                <module name="org.jboss.resteasy.resteasy-jettison-provider"/>
            </exclusions>
            <dependencies>
                <module name="org.jboss.resteasy.resteasy-jackson-provider" services="import"/>
                <module name="org.hibernate.infinispan" services="import" slot="${version.org.hibernate}"/>
            </dependencies>
        </sub-deployment>
[...]

不幸的是,我仍然无法使用这个 Stacktrace 将 EAR 文件部署到我的 Wildfly

 Unable to build Hibernate SessionFactory
        at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:195)
        at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:125)
        at org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:640)
        at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:209)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:748)
        at org.jboss.threads.JBossThread.run(JBossThread.java:320)
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: DM_DERIVATEV] Unable to build Hibernate SessionFactory
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.persistenceException(EntityManagerFactoryBuilderImpl.java:970)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:895)
        at org.jboss.as.jpa.hibernate5.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44)
        at org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:167)
        ... 7 more
Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.spi.CacheImplementor]
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:271)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:233)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:210)
        at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.getService(SessionFactoryServiceRegistryImpl.java:80)
        at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:243)
        at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:462)
        at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:892)
        ... 9 more
Caused by: org.hibernate.cache.CacheException: HHH025011: Infinispan custom cache command factory not installed (possibly because the classloader where Infinispan lives couldn't find the Hibernate Infinispan cache provider)
        at org.hibernate.cache.infinispan.InfinispanRegionFactory.getCacheCommandFactory(InfinispanRegionFactory.java:743)
        at org.hibernate.cache.infinispan.InfinispanRegionFactory.startRegion(InfinispanRegionFactory.java:600)
        at org.hibernate.cache.infinispan.InfinispanRegionFactory.buildTimestampsRegion(InfinispanRegionFactory.java:390)
        at org.hibernate.internal.CacheImpl.<init>(CacheImpl.java:78)
        at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:28)
        at org.hibernate.engine.spi.CacheInitiator.initiateService(CacheInitiator.java:20)
        at org.hibernate.service.internal.SessionFactoryServiceRegistryImpl.initiateService(SessionFactoryServiceRegistryImpl.java:59)
        at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:259)
        ... 15 more

我错过了什么?希望您能帮助我并致以最诚挚的问候,

马吕斯

标签: hibernateconfigurationinfinispanwildfly-11

解决方案


好的,我找到了丢失的链接。还必须调整standalone/configuration/standalone.xml 文件。

搜索:<cache-container name="hibernate" module="org.hibernate.infinispan:4"> 替换:<cache-container name="hibernate" module="org.hibernate.infinispan:5.2">

5.2 当然是你指的版本,根据你的需要调整它。

更详细:

此致,

马吕斯


推荐阅读