BigMemory 4.0.5 Terrocatta分布式+ hibernate二级缓存无法配置

时间:2013-12-23 10:28:59

标签: hibernate caching terracotta ehcache-bigmemory

我正在使用Bigmemory Max 4.0.5由于terracotta为我的应用程序分配缓存作为hibernate二级缓存,但我在服务器启动时遇到以下异常。

引起:com.tc.config.schema.setup.ConfigurationSetupException:


来自“localhost:9510”服务器的基本配置中的配置数据不遵守Terracotta架构:   [0]:第7行,第5列:不允许属性(不允许使用通配符):在元素服务器中安全   [1]:第9行,第9列:元素服务器中的预期元素“服务器”而不是“镜像组”   [2]:第28行,第9列:元素服务器中的预期元素'server'而不是'update-check'   [3]:第32行,第9列:元素服务器中的预期元素“服务器”而不是“垃圾收集”   [4]:第37行,第9列:元素服务器中的预期元素'server'而不是'restartable'   [5]:第38行,第9列:元素服务器中的预期元素“服务器”而不是“客户端重新连接窗口”

我的 tc-config.xml 如下: -

<?xml version="1.0" encoding="UTF-8" ?>
<tc:tc-config xmlns:tc="http://www.terracotta.org/config"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-8.xsd">

  <servers>
    <server host="localhost" name="MyServerName">
      <!-- Specify the path where the server should store its data. -->
      <data>E:\Bratton\Pocs\bigmemory-max-4.0.5\data-test</data>
       <!-- Specify the port where the server should listen for client 
       traffic. -->
       <tsa-port>9510</tsa-port>
       <jmx-port>9520</jmx-port>
       <tsa-group-port>9530</tsa-group-port>
       <!-- Enable BigMemory on the server. -->
       <offheap>
         <enabled>true</enabled>
         <maxDataSize>512m</maxDataSize>
       </offheap>
     </server>
    <!-- Add the restartable element for Fast Restartability (optional). -->
    <restartable enabled="true"/>
  </servers>
  <clients>
    <logs>logs-%i</logs>
  </clients>
</tc:tc-config>

以下是 ehcache.xml : -

<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">
     <terracottaConfig url="localhost:9510"/>
    <defaultCache
            eternal="false"
            timeToIdleSeconds="120"
            timeToLiveSeconds="120">
       <terracotta/>    

    </defaultCache>        

</ehcache>

以下是依赖关系我正在使用

 <dependency> 
                <groupId>net.sf.ehcache</groupId> 
                <artifactId>ehcache-core</artifactId> 
                <version>2.6.0</version> 
            </dependency>

            <dependency>
              <groupId>org.hibernate</groupId>
              <artifactId>hibernate-ehcache</artifactId>
              <version>4.2.4.Final</version>
            </dependency>

            <dependency> 
                <groupId>net.sf.ehcache</groupId> 
                <artifactId>ehcache-terracotta</artifactId> 
                <version>2.6.0</version> 
            </dependency> 

            <dependency> 
                <groupId>org.terracotta</groupId> 
                <artifactId>terracotta-toolkit-runtime-ee</artifactId>
                <version>4.0.5</version> 
            </dependency> 

我尝试了各种依赖版本的组合,但都没有帮助。请让我知道这有什么问题。

提前致谢。

2 个答案:

答案 0 :(得分:0)

您是否尝试使用镜像组标记? 有效配置如下所示:

<?xml version="1.0" encoding="UTF-8" ?>
<tc:tc-config xmlns:tc="http://www.terracotta.org/config"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://www.terracotta.org/schema/terracotta-8.xsd">

  <servers>
    <mirror-group group-name="tsa01">
      <server host="localhost" name="MyServerName">
        <!-- Specify the path where the server should store its data. -->
        <data>E:\Bratton\Pocs\bigmemory-max-4.0.5\data-test</data>
        <!-- Specify the port where the server should listen for client
                traffic. -->
        <tsa-port>9510</tsa-port>
        <jmx-port>9520</jmx-port>
        <tsa-group-port>9530</tsa-group-port>
        <!-- Enable BigMemory on the server. -->
        <offheap>
          <enabled>true</enabled>
          <maxDataSize>512m</maxDataSize>
        </offheap>
      </server>
    </mirror-group>
    <!-- Add the restartable element for Fast Restartability (optional). -->
    <restartable enabled="true"/>
  </servers>
  <clients>
    <logs>logs-%i</logs>
  </clients>
</tc:tc-config>

答案 1 :(得分:0)

hibernate-ehcache取决于ehcache-core版本早于您指定的版本。尝试按如下方式禁用此依赖项:

    <dependency> 
        <groupId>org.hibernate</groupId>            
        <artifactId>hibernate-ehcache</artifactId>
        <version>4.2.4.Final</version>
        <exclusions>
            <exclusion>
                <artifactId>ehcache-core</artifactId>
                <groupId>net.sf.ehcache</groupId>
            </exclusion>
        </exclusions>
    </dependency>