Wildfly 14中具有Infinispan的JCache会为InfinispanExtensionEmbedded类型生成未满足的依赖关系,并带有限定符@Default

时间:2019-06-16 13:00:01

标签: infinispan jcache infinispan-9

我正在遵循一些指南,以Infinispan作为提供程序在Wildfly 14环境中设置JCache。

我遵循了以下步骤: -我从Infinispan网站下载了wildfly模块版本9.4.14 -我将zip的内容复制到Wildfly的模块目录中 -我在文件中添加了jboss-deployment-structure.xml文件 -我在应用程序的beans.xml文件中添加了拦截器 -我将注释@CacheResult添加到函数中 -我启动Wildfly并收到以下错误   org.jboss.weld.exceptions.DeploymentException:WELD-001408:类型InfinispanExtension的不满意依赖项包含有限定符@Default   在注入点[BackedAnnotatedField] @Inject私有org.infinispan.cdi.embedded.AdvancedCacheProducer.infinispanExtension

我添加了有用的信息。我要在wildfly上部署的应用程序很麻烦,这就是我正在使用的结构:

  • 耳锉
    • lib
    • META-INF
    • JAR库文件
    • META-INF
      • beans.xml文件
      • jboss-deployment-structure.xml
    • WAR文件

jboss-deployment-structure.xml:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <deployment>
        <dependencies>
            <module name="org.infinispan" slot="ispn-9.4" services="export"/>
            <module name="org.infinispan.cdi.embedded" slot="ispn-9.4" services="export"/>
            <module name="org.infinispan.jcache" slot="ispn-9.4" services="export"/>
        </dependencies>
  </deployment>
</jboss-deployment-structure>

beans.xml:

    <beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
    http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd"
           version="1.1" bean-discovery-mode="all">
        <interceptors>
<class>org.infinispan.jcache.annotation.InjectedCacheResultInterceptor</class>

   <class>org.infinispan.jcache.annotation.InjectedCachePutInterceptor</class> 


<class>org.infinispan.jcache.annotation.InjectedCacheRemoveEntryInterceptor</class>


<class>org.infinispan.jcache.annotation.InjectedCacheRemoveAllInterceptor</class> 
    <class>org.infinispan.jcache.annotation.CacheResultInterceptor</class>
    <class>org.infinispan.jcache.annotation.CachePutInterceptor</class>


<class>org.infinispan.jcache.annotation.CacheRemoveEntryInterceptor</class> 

 <class>org.infinispan.jcache.annotation.CacheRemoveAllInterceptor</class>
        </interceptors>
    </beans>

使用这种标准配置,我希望拦截器开始在bean.xml中开始定义,因此我可以在应用程序中使用默认的缓存容器

1 个答案:

答案 0 :(得分:0)

org.infinispan.cdi.embedded和org.infinispan.jcache模块内部具有SPI扩展(jar / META-INF / services文件夹)。只需在jboss-deployment-structure.xml中的模块依赖项中添加services =“ export”即可启用它们。 这是我的jboss-deployment-structure.xml:

<jboss-deployment-structure>
<deployment>
    <module-alias name="deployment.magic-blog" />
    <dependencies>
        <module name="org.infinispan.cdi.embedded" slot="ispn-9.4" export="true" services="export" />
        <module name="org.infinispan.jcache" slot="ispn-9.4" export="true" services="export" />
        <module name="javax.cache.api" slot="ispn-9.4" export="true"/>
    </dependencies>
</deployment>