Infinispan保存到Weblogic服务器中的缓存

时间:2013-11-25 21:03:38

标签: transactions infinispan

以下是我的设置详情:

Application Server:Weblogic 10.3 Infinispan版本:5.3.0.Final 模式:图书馆模式 操作系统:Linux 服务器设置:高可用性

我使用的是TreeCache API,因为我们从JBoss Cache迁移。

我看到的是,当我对正常的linux或Windows机器运行代码时。 put和get API工作正常。

但是当我针对Weblogic服务器运行代码时,就说从未成功说过Transaction Failed。 (XA交易)。请注意,当我不使用交易时会发生这种情况。

我通过在xml配置文件中声明Transactions来完成这项工作,如下所示:

 <transaction transactionManagerLookupClass="org.infinispan.transaction.lookup.GenericTransactionManagerLookup"

            lockingMode="OPTIMISTIC"

            transactionMode="TRANSACTIONAL"
    />

它仍然无效。

然后我不得不通过以下方式调用weblogic UserTransaction “

@Resource
private static UserTransaction utx ;

utx = new InitialContext().lookup("java:comp/UserTransaction"); 

然后使用

   utx.begin();
   get node by fqn; 
   node.put(key,value);
   utx.commit();

只有在上面的引号中,我在缓存中看到一个条目并且可以成功检索它

我想明白为什么会这样?我可以避免使用交易吗?

下面是xml配置文件:

    <global>
        <globalJmxStatistics    enabled = "true" />

        <transport clusterName = "CACHE_CLUSTER">
                <properties>
                        <property       name="configurationFile"
                                        value="tcp.xml" />
                </properties>
        </transport>

   </global>

   <default>

        <clustering mode="replication">
                <async asyncMarshalling="true" useReplQueue="true" replQueueInterval="10" replQueueMaxElements="100" />
                <stateTransfer timeout="2000000"/>
        </clustering>

        <transaction
            transactionManagerLookupClass="org.infinispan.transaction.lookup.GenericTransactionManagerLookup"
            lockingMode="OPTIMISTIC"
            transactionMode="TRANSACTIONAL"
            />

        <invocationBatching             enabled                 = "true"/>
        <jmxStatistics enabled="true"/>
   </default>

1 个答案:

答案 0 :(得分:0)

我强烈建议你移动Tree API并使用普通的Map API,它更易于使用,可以在有和没有事务的情况下使用。 Tree API确实需要批处理,这会强制启用事务。