当前位置: 首页 > 知识库问答 >
问题:

如何将兵马俑与冬眠相结合

令狐经武
2023-03-14

我正在尝试将我的应用程序连接到 Terracotta 缓存群集,但我在使用我设置的配置启动应用程序时遇到问题。我在控制台中没有收到任何错误,但是如果我进行调试,则在尝试创建缓存管理器时会失败。

我得到的错误是这个。原因: java.lang.ClassNotfundException: net.sf.ehcache.config.TerracottaConfig配置

我正在使用冬眠4.x,Spring4.x,兵马俑大纪念马克斯4.x。

你能告诉我我做错了什么,或者在哪里可以找到最新的文档吗?

这些是我的配置:

Hibernate属性:

<prop key="hibernate.cache.use_structured_entries">true</prop>
<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="net.sf.ehcache.configurationResourceName">ehcache-hibernate.xml</prop>

Ehcache-hibernate.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache name="ehcache-hibernate"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="ehcache.xsd">

<cache name="User" maxElementsInMemory="1000"
       maxElementsOnDisk="10000" eternal="false" timeToIdleSeconds="3600"
       timeToLiveSeconds="1200" memoryStoreEvictionPolicy="LFU">
    <terracotta />
</cache>

<defaultCache
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="1200"
        timeToLiveSeconds="1200">
    <!--<terracotta />-->
</defaultCache>
<terracottaConfig url="localhost:9510" />

Maven相关依赖项:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
    <version>4.3.10.Final</version>
</dependency>
<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-terracotta</artifactId>
    <version>2.1.1</version>
</dependency>
<dependency>
    <groupId>org.terracotta</groupId>
    <artifactId>terracotta-toolkit-1.6-runtime-ee</artifactId>
    <version>5.8.0</version>
</dependency>
<dependency>
    <groupId>org.terracotta</groupId>
    <artifactId>terracotta-toolkit-runtime-ee</artifactId>
    <version>4.1.1</version>
</dependency>

我在Windows上,我已经启动了Terracotta服务器和管理控制台。服务器显示为活动状态,但没有连接到它的客户端。

我试图使用类似于我自己的环境来寻找有效配置的例子,但是找不到任何例子。

谢谢你!

共有2个答案

邹缪文
2023-03-14

我担心你不会得到这个工作。我不知道有哪个代码库(甚至是非官方的)会支持带有冬眠4.x的兵马俑4.1。很可能是我的记忆在这里让我失望了,但是...

您可以尝试的最好方法是使用Ehcache嵌入式Hibernate 2LC提供程序类(在<code>net.sf.Ehcache<code>包中),但我认为它们不支持Hibernate4.x SPI。

许阿苏
2023-03-14

你的类路径中缺少 ehcache-core添加以下依赖项以使其正常工作:

<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache-core</artifactId>
  <version>2.1.1</version>
</dependency>
 类似资料:
  • 我在我的应用程序中使用了maven、hibernate3、struts和spring,并成功地使用了ehcache。缓存是在本地完成的,现在我想要分布式。我找不到一个很好的教程,它一步一步地解释了如何使用ehcache和terracotta进行分发。 帮助将不胜感激。 谢啦

  • 我们在Grails环境中配置了ehcache,我正在尝试确定如何使用远程terracotta缓存配置本地缓存。 这个场景是,我们有一些计算成本最低的数据,并受益于本地内存缓存,但当使用远程terracotta缓存时,这种好处被最小化了。 配置目前非常简单: 问题是: > 鉴于上面的配置,这是否意味着缓存放置/获取将始终往返于兵马俑服务器? 在往返服务器之前,是否有可能使用本地“热”缓存的配置? 如

  • 我发现了很多展示如何在Spring Boot应用程序中集成Ehcache的例子,例如这里所描述的。就我对这个例子的理解,Ehcache本身是运行在Spring应用程序中的。 然而,我们的设置提供了一个Terracotta服务器作为“中央”缓存实例。不幸的是,到目前为止我还没有找到任何文档,如何告诉我的Spring Boot应用程序使用远程Terracotta服务器作为Ehcache。 你有什么例子

  • 问题内容: 这些查询翻译器之间有什么区别(对于Hibernate用户而言,我的意思是不同)。互联网上的一些博客说基于ANTLR的翻译器更快。但是我认为,如果其中一个明显更好,那么Hibernate开发人员将删除另一个。那么..有什么区别?为什么我们都拥有它们?在什么情况下我应该选择第一还是第二?在什么情况下我不应该选择其中一位翻译? 问题答案: 这是 内部休眠配置 ; 它将在升级到版本3时实现 。

  • 另一种方法是使用Crieteria关联,但关联只能与和一起工作! 请在这里帮帮我。

  • 我在系统中运行了2/3个Java/Spring引导应用程序。我想使用通用存储,以便其他Java应用程序也可以使用任何其他Java /Spring启动应用程序生成的缓存。 我可以使用公共磁盘库在内存中创建ecache吗? 或者我应该在我的机器上运行独立的ehcache 所以,据我所知,看起来如果我们需要在服务器中运行,它应该在Terracotta服务器中。 但是,我更希望集中缓存,以便其他应用程序可