使用terracotta设置hibernate分布式ehcache时的会话工厂问题

使用terracotta设置hibernate分布式ehcache时的会话工厂问题,ehcache,terracotta,nhibernate-caches,Ehcache,Terracotta,Nhibernate Caches,我正在尝试用Terracotta在分布式环境中设置EHCache。在这里,我可以连接应用服务器和Terracotta服务器,在Terracotta开发者控制台中,我可以看到复制的对象 但在application server中,尽管应用程序的其余部分运行正常,但仍会持续出现以下异常消息: 大家好,如果有任何机构可以指导为什么会出现此异常消息以及我们如何解决它。 此外,如果有关于设置terracotta for hibernate应用程序的全面教程,也会对我有所帮助 这里[CacheByAmitN

我正在尝试用Terracotta在分布式环境中设置EHCache。在这里,我可以连接应用服务器和Terracotta服务器,在Terracotta开发者控制台中,我可以看到复制的对象

但在application server中,尽管应用程序的其余部分运行正常,但仍会持续出现以下异常消息:

大家好,如果有任何机构可以指导为什么会出现此异常消息以及我们如何解决它。 此外,如果有关于设置terracotta for hibernate应用程序的全面教程,也会对我有所帮助

这里[CacheByAmitNode8081]是我在ApplicationServer中定义的缓存节点的名称

[DEBUG][04/05/12 12:49:07.973][CacheByAmitNode8081] Running mbean initializer task for ehcache hibernate...
[DEBUG][04/05/12 12:49:07.995][CacheByAmitNode8081] Successfully registered bean
[ERROR][04/05/12 12:49:08.000][CacheByAmitNode8081] Error locating Hibernate Session Factory
java.lang.NullPointerException
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:36)
at sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl.get(UnsafeQualifiedObjectFieldAccessorImpl.java:20)
at java.lang.reflect.Field.get(Field.java:358)
at org.hibernate.cache.ehcache.management.impl.ProviderMBeanRegistrationHelper$RegisterMBeansTask.locateSessionFactory(ProviderMBeanRegistrationHelper.java:152)
at org.hibernate.cache.ehcache.management.impl.ProviderMBeanRegistrationHelper$RegisterMBeansTask.run(ProviderMBeanRegistrationHelper.java:117)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
[DEBUG][04/05/12 12:49:08.001][CacheByAmitNode8081] SessionFactory is probably still being initialized... waiting for it to complete before enabling hibernate statistics monitoring via JMX
[DEBUG][04/05/12 12:49:08.001][CacheByAmitNode8081] Running mbean initializer task for ehcache hibernate...
[ERROR][04/05/12 12:49:08.001][CacheByAmitNode8081] Error locating Hibernate Session Factory
java.lang.NullPointerException
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:36)
at sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl.get(UnsafeQualifiedObjectFieldAccessorImpl.java:20)
at java.lang.reflect.Field.get(Field.java:358)
at org.hibernate.cache.ehcache.management.impl.ProviderMBeanRegistrationHelper$RegisterMBeansTask.locateSessionFactory(ProviderMBeanRegistrationHelper.java:152)
at org.hibernate.cache.ehcache.management.impl.ProviderMBeanRegistrationHelper$RegisterMBeansTask.run(ProviderMBeanRegistrationHelper.java:117)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)*

当您使用Terracotta时,需要在类路径上添加特定的Terracotta JAR,以替换ehcache实现。在您的异常堆栈中,我没有看到任何terracotta类输出

在我的maven依赖项中,我有:

<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache-core-ee</artifactId>
  <version>2.5.2</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache-terracotta-ee</artifactId>
  <version>2.5.2</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>org.terracotta</groupId>
  <artifactId>terracotta-toolkit-1.5-runtime-ee</artifactId>
  <version>4.2.0</version>
  <scope>compile</scope>
</dependency>
您还可以查看Terracotta教程,了解如何插入休眠:

当您使用Terracotta时,您需要在类路径上添加特定的Terracotta jar,以替换ehcache实现。在您的异常堆栈中,我没有看到任何terracotta类输出

在我的maven依赖项中,我有:

<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache-core-ee</artifactId>
  <version>2.5.2</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>net.sf.ehcache</groupId>
  <artifactId>ehcache-terracotta-ee</artifactId>
  <version>2.5.2</version>
  <scope>compile</scope>
</dependency>
<dependency>
  <groupId>org.terracotta</groupId>
  <artifactId>terracotta-toolkit-1.5-runtime-ee</artifactId>
  <version>4.2.0</version>
  <scope>compile</scope>
</dependency>
您还可以查看Terracotta教程,了解如何插入休眠: