【问题标题】:How To Use Hibernate 4 with WildFly 13如何使用 Hibernate 4 和 WildFly 13
【发布时间】:2018-12-21 08:52:37
【问题描述】:

是否可以在Wildfly 13 上使用hibernate-core-4.x 运行应用程序?

我很确定在 WildFly13 上不支持 hibernate 4,但是无论如何我都需要这样做。造成这种情况的部分原因是应用程序正在使用一些在 hibernate 5 中不再存在的类(例如Mappings),更改它们将是巨大的努力。

我的偏好是只更新应用程序,但我需要表现出“尽职调查”(或其他)来证明努力的合理性。

我们看到的例外情况与让 hibernate 4 与 infinispan 9 配合得很好有关,或者也可能将 infinispan 降级到版本“6.x”。

我所知道的所有相关经验都与 Tomcat 相关,因此我需要一些帮助,要么让它工作,要么能够显示官方文档或声明说不支持休眠 4。

堆栈跟踪

2018-07-11 17:30:17,034 错误 (Thread-1 (ActiveMQ-client-global-threads)) [stderr] at org.infinispan.configuration.parsing.ParserRegistry.parseElement(ParserRegistry.java:174)

2018-07-11 17:30:17,050 错误 (Thread-1 (ActiveMQ-client-global-threads)) [stderr] at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:150)

2018-07-11 17:30:17,050 错误 (Thread-1 (ActiveMQ-client-global-threads)) [stderr] at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:137)

2018-07-11 17:30:17,050 错误 (Thread-1 (ActiveMQ-client-global-threads)) [stderr] at org.infinispan.configuration.parsing.ParserRegistry.parse(ParserRegistry.java:123)

2018-07-11 17:30:17,050 错误 (Thread-1 (ActiveMQ-client-global-threads)) [stderr] at org.hibernate.cache.infinispan.InfinispanRegionFactory.createCacheManager(InfinispanRegionFactory.java:415)

2018-07-11 17:30:17,050 错误 (Thread-1 (ActiveMQ-client-global-threads)) [stderr] at org.hibernate.cache.infinispan.InfinispanRegionFactory.start(InfinispanRegionFactory.java:323)

解析器注册表中抛出异常的代码:

public void parseElement(XMLExtendedStreamReader reader, ConfigurationBuilderHolder holder) throws XMLStreamException {

    QName name = reader.getName();

    ParserRegistry.NamespaceParserPair parser = (ParserRegistry.NamespaceParserPair)this.parserMappings.get(name);
    if (parser == null)
    {
        String uri = name.getNamespaceURI();
        int lastColon = uri.lastIndexOf(':');
        String baseUri = uri.substring(0, lastColon + 1) + "*";
        parser = (ParserRegistry.NamespaceParserPair)this.parserMappings.get(new QName(baseUri, name.getLocalPart()));
        if ((parser == null) || (!isSupportedNamespaceVersion(parser.namespace, uri.substring(lastColon + 1)))) throw log.unsupportedConfiguration(name.getLocalPart(), name.getNamespaceURI());
    }
    Schema oldSchema = reader.getSchema();
    reader.setSchema(Schema.fromNamespaceURI(name.getNamespaceURI()));
    parser.parser.readElement(reader, holder);
    reader.setSchema(oldSchema);
}

【问题讨论】:

  • 你不能让 Hibernate 4 和 Infinispan 9 一起工作。 Infinispan 9.3 仅支持 Hibernate 5.1 和 5.3。
  • @TristanTarrant 我有点怀疑。是否可以使用 gradle|maven 的 WildFly 配置插件将 infinispan 降级到兼容版本?我有点了解如何配置“功能”,但我仍然不清楚降级如何或是否会与默认版本冲突。
  • 必须使用 Wildfly 13 吗?例如,Wildfly 10 使用 Hibernate 4.x。
  • @stdundbar 是的。 WildFly 13 包含一个我需要的错误修复,这在任何其他版本的 WildFly/jBoss 中都没有。
  • 是时候升级到 Hibernate 5.1/5.3 了吗?

标签: hibernate wildfly infinispan wildfly-13


【解决方案1】:

我在我的项目中使用 jboss-deployment-structure.xml 在我的项目中解决了这个问题:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
        <dependencies>
            <module name="org.hibernate" slot="4.3"/>
        </dependencies>
</deployment>
</jboss-deployment-structure>  

还有插槽 4.1

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 2021-12-17
    • 1970-01-01
    相关资源
    最近更新 更多