WildFly 18 обновляет Hibernate до 5.4.12. - PullRequest
1 голос
/ 17 февраля 2020

Я пытаюсь обновить версию Hibernate моего сервера WildFly 18.0.1. Но я столкнулся с проблемой с Infinispan, который используется для кэширования. Классификация c WildFly имеет Hibernate 5.3.13.Final и Infinispan 9.4.16.Final.

Для обновления я использую wildfly-server-provisioning-maven-plugin со следующими server-provisioning.xml:

<server-provisioning xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:wildfly:server-provisioning:1.2" extract-schemas="true" copy-module-artifacts="true"
                 extract-schemas-groups="org.jboss.as org.wildfly org.wildfly.core org.jboss.metadata">
<feature-packs>
    <feature-pack
            groupId="org.hibernate"
            artifactId="hibernate-orm-jbossmodules"
            version="5.4.12.Final" />
    <feature-pack
            groupId="org.hibernate"
            artifactId="hibernate-search-jbossmodules-orm"
            version="5.10.7.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-client"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-client"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-embedded"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-embedded-query"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-commons"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.infinispan"
            artifactId="infinispan-feature-pack-wf-modules"
            version="10.1.2.Final" />
    <feature-pack
            groupId="org.hibernate.lucene-jbossmodules"
            artifactId="lucene-jbossmodules"
            version="5.5.5.hibernate06"/>
    <feature-pack
            groupId="org.wildfly"
            artifactId="wildfly-feature-pack"
            version="${wildfly.version}" />
</feature-packs>

Я пробовал разные версии, например 9.4.18.Final или 10.0.1.Final. Используя встроенный WildFly с новыми версиями, я получаю следующее исключение:

15:40:15,510 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service org.wildfly.clustering.infinispan.cache-container.hibernate: org.jboss.msc.service.StartException in service org.wildfly.clustering.infinispan.cache-container.hibernate: java.lang.NoClassDefFoundError: Failed to link org/infinispan/hibernate/cache/commons/util/SecondLevelCacheMetadataModuleFinder (Module "org.infinispan.hibernate-cache" version 9.4.16.Final from local module loader @5f2108b5 (finder: local module finder @31a5c39e (roots: D:\Dev\Servers\wildfly-hibernate-5.4.11\modules,D:\Dev\Servers\wildfly-hibernate-5.4.11\modules\system\layers\base,D:\Dev\Servers\wildfly-hibernate-5.4.11\modules\system\add-ons\ispn))): org/infinispan/factories/components/ModuleMetadataFileFinder
at org.wildfly.clustering.service.FunctionalService.start(FunctionalService.java:70)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: Failed to link org/infinispan/hibernate/cache/commons/util/SecondLevelCacheMetadataModuleFinder (Module "org.infinispan.hibernate-cache" version 9.4.16.Final from local module loader @5f2108b5 (finder: local module finder @31a5c39e (roots: D:\Dev\Servers\wildfly-hibernate-5.4.11\modules,D:\Dev\Servers\wildfly-hibernate-5.4.11\modules\system\layers\base,D:\Dev\Servers\wildfly-hibernate-5.4.11\modules\system\add-ons\ispn))): org/infinispan/factories/components/ModuleMetadataFileFinder
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at org.jboss.modules.ModuleClassLoader.doDefineOrLoadClass(ModuleClassLoader.java:423)
at org.jboss.modules.ModuleClassLoader.defineClass(ModuleClassLoader.java:555)
at org.jboss.modules.ModuleClassLoader.loadClassLocal(ModuleClassLoader.java:339)
at org.jboss.modules.ModuleClassLoader$1.loadClassLocal(ModuleClassLoader.java:126)
at org.jboss.modules.Module.loadModuleClass(Module.java:731)
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:247)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:410)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:116)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at org.infinispan.commons.util.ServiceFinder.addServices(ServiceFinder.java:63)
at org.infinispan.commons.util.ServiceFinder.load(ServiceFinder.java:44)
at org.infinispan.util.ModuleProperties.getModuleMetadataFiles(ModuleProperties.java:47)
at org.infinispan.factories.GlobalComponentRegistry.<init>(GlobalComponentRegistry.java:107)
at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:257)
at org.jboss.as.clustering.infinispan.subsystem.CacheContainerServiceConfigurator.get(CacheContainerServiceConfigurator.java:100)
at org.jboss.as.clustering.infinispan.subsystem.CacheContainerServiceConfigurator.get(CacheContainerServiceConfigurator.java:73)
at org.wildfly.clustering.service.FunctionalService.start(FunctionalService.java:67)
... 8 more

Насколько я понимаю, это исключение выдается, потому что модуль org.infinispan.hibernate-cache отсутствует в обновлении. Так как я не мог понять, как его обновить, я добавил банки вручную. Если я использую Infinispan 10.1.2.Final и добавляю модуль hibernate-cache, я все равно получаю исключение:

15:43:53,638 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) MSC000001: Failed to start service org.wildfly.clustering.infinispan.cache-container.hibernate: org.jboss.msc.service.StartException in service org.wildfly.clustering.infinispan.cache-container.hibernate: org.infinispan.commons.CacheException: Unable to load component metadata!
at org.wildfly.clustering.service.FunctionalService.start(FunctionalService.java:70)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
at org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1982)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.infinispan.commons.CacheException: Unable to load component metadata!
at org.infinispan.factories.components.ComponentMetadataRepo.initialize(ComponentMetadataRepo.java:175)
at org.infinispan.factories.GlobalComponentRegistry.<init>(GlobalComponentRegistry.java:107)
at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:257)
at org.jboss.as.clustering.infinispan.subsystem.CacheContainerServiceConfigurator.get(CacheContainerServiceConfigurator.java:100)
at org.jboss.as.clustering.infinispan.subsystem.CacheContainerServiceConfigurator.get(CacheContainerServiceConfigurator.java:73)
at org.wildfly.clustering.service.FunctionalService.start(FunctionalService.java:67)
... 8 more
Caused by: java.lang.NullPointerException
at org.infinispan.factories.components.ComponentMetadataRepo.readMetadata(ComponentMetadataRepo.java:44)
at org.infinispan.factories.components.ComponentMetadataRepo.initialize(ComponentMetadataRepo.java:173)
... 13 more

Я не уверен в этом исключении, но, похоже, оно указывает на неправильную конфигурацию. Я использую standalone.xml по умолчанию от WildFly:

    <subsystem xmlns="urn:jboss:domain:infinispan:9.0">
        <cache-container name="web" default-cache="passivation" module="org.wildfly.clustering.web.infinispan">
            <local-cache name="passivation">
                <locking isolation="REPEATABLE_READ" />
                <transaction mode="BATCH" />
                <file-store passivation="true" purge="false" />
            </local-cache>
            <local-cache name="sso">
                <locking isolation="REPEATABLE_READ" />
                <transaction mode="BATCH" />
            </local-cache>
            <local-cache name="routing" />
        </cache-container>
        <cache-container name="server" default-cache="default" module="org.wildfly.clustering.server">
            <local-cache name="default">
                <transaction mode="BATCH" />
            </local-cache>
        </cache-container>
        <cache-container name="ejb" aliases="sfsb" default-cache="passivation" module="org.wildfly.clustering.ejb.infinispan">
            <local-cache name="passivation">
                <locking isolation="REPEATABLE_READ" />
                <transaction mode="BATCH" />
                <file-store passivation="true" purge="false" />
            </local-cache>
        </cache-container>
        <cache-container name="hibernate" module="org.infinispan.hibernate-cache">
            <local-cache name="entity">
                <object-memory size="10000" />
                <expiration max-idle="100000" />
            </local-cache>
            <local-cache name="local-query">
                <object-memory size="10000" />
                <expiration max-idle="100000" />
            </local-cache>
            <local-cache name="timestamps" />
        </cache-container>
    </subsystem>

. Если есть изменения в этой схеме конфигурации, я не смог найти правильную схему для использования здесь. Короче говоря, я хотел бы знать, какая версия Infinispan совместима с текущей версией Hibernate и какие изменения мне нужно сделать, если мне нужно обновить Infinispan до 10.1.2.Final.

1 Ответ

1 голос
/ 18 февраля 2020

Замена Hibernate и Infinispan внутри WildFly - это нетривиальное начинание, тем более что существуют внутренние компоненты сервера, которые зависят от этих компонентов (подсистема JPA, подсистема кластеризации и т. Д. c). Если вы хотите использовать более новые компоненты, вам следует либо упаковать их в своем развертывании, либо создать структуру параллельных модулей, используя выделенный слот (вместо «основного») в иерархии modules / system / add-ons, и импортировать их через структуру развертывания. XML или МАНИФЕСТ. Имейте в виду, однако, что в этом случае вы потеряете любую «помощь» со стороны сервера (например, автоматическое c обнаружение постоянных единиц, кэши, определенные вне приложения)

...