2013-12-07 3 views
2

В моем процессе переноса рабочего приложения EAR в JBoss AS 7.1.1-Finel я столкнулся с другой проблемой, которую я не могу решить. Вскоре EJB3 ищет контейнер кеша и хранит в нем данные.Ошибка доступа к контейнеру кеша Infinispan

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; 
} 

ЕАР определяет зависимость от infinispan в JBoss-развертывания-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 

Может ли кто-нибудь мне помочь?

С наилучшими пожеланиями, СК

ответ

2

Это будет работать только для развертывания верхнего уровня, как описано here. Вы, возможно, потребуется переместить 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> 
+0

Спасибо Szymon, что решить мою проблему. –

+0

Спасибо, это было очень полезно. Однако это не должно работать как глобальная зависимость, например. как мы это делаем с помощью, например, org.hibernate.commons-аннотации и т. д.? Связанный с вами документ говорит, что зависимости развертывания являются глобальными, как если бы они были добавлены в манифест (это то, что предлагает документ Infinispan). Есть идеи по этому поводу? – Thomas

+0

@Thomas Я не уверен, правильно ли я понимаю, но если вы имеете в виду раздел _Global Modules_, то да, он должен работать и на этом уровне. Имейте в виду, что это не связано с 'jboss-deployment-structure.xml', поскольку раздел' 'помещается в конфигурацию сервера приложений (например,' standalone.xml'), а не в дескриптор развертывания сам. –

Смежные вопросы