Доступ к кэш-контейнеру Infinispan не выполнен
В процессе переноса работающего приложения EAR в JBoss AS 7.1.1-Finel я столкнулся с другой проблемой, которую не могу решить. Вскоре EJB3 ищет контейнер кеша и сохраняет в нем данные.
org.infinispan.manager.CacheContainer container = null;
...
public static CacheContainer getCacheContainer() {
if(container == null) {
try {
Context ctx = new InitialContext();
container = (CacheContainer) ctx
.lookup("java:jboss/infinispan/container/mycache");
} catch (NamingException e) {
e.getCause();
}
}
return container;
}
EAR определяет зависимость от infinispan в jboss-deploy-structure.xml следующим образом:
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="org.hibernate" slot="main" />
<module name="org.infinispan" slot="main" />
<module name="org.jboss.as.clustering.infinispan" />
</dependencies>
</deployment>
</jboss-deployment-structure>
При развертывании этого кода я получаю следующую ошибку:
Caused by: java.lang.NoClassDefFoundError: org/infinispan/manager/CacheContainer
Может ли кто-нибудь помочь мне?
С уважением, СК
1 ответ
Решение
Это будет работать только для развертывания верхнего уровня, как описано здесь. Возможно, вам придется переместить org.infinispan
зависимость от соответствующего sub-deployment
раздел:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
...
<!-- This corresponds to the top level deployment. For a war this is the war's module, for an ear -->
<!-- This is the top level ear module, which contains all the classes in the EAR's lib folder -->
<deployment>
<dependencies>
...
</dependencies>
</deployment>
<sub-deployment name="myapp.war">
<!-- This corresponds to the module for a web deployment -->
<!-- it can use all the same tags as the <deployment> entry above -->
<dependencies>
<module name="org.infinispan" slot="main" />
</dependencies>
</sub-deployment>
...
</jboss-deployment-structure>