2013-11-25 102 views
1

下面是我的設置細節:Infinispan的保存到緩存在WebLogic Server

應用服務器:Weblogic的10.3 Infinispan的版本:5.3.0.Final 模式:圖書館模式 操作系統:Linux 服務器設置:高可用性

自從我們從JBoss Cache遷移後,我使用了TreeCache API。

我看到的是,當我運行代碼對普通的Linux或Windows機器。放置並獲取API工作正常。

但是,當我運行代碼反對Weblogic服務器,把永不成功說事務失敗。 (XA交易)。請注意,當我不使用交易時會發生這種情況。

我做了這個工作,通過如下XML配置文件中聲明的交易:

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

回答

0

我強烈建議您將樹的API,你使用正常的地圖API,它更容易使用,並且可以使用和不使用交易。 Tree API確實需要批處理,強制啓用事務。

+0

感謝您的答覆Galder。我選擇了treecache是​​因爲我們從JBoss Cache遷移,預期的變化很小。 – Arjun

+0

但我會認真考慮切換到mapAPI的這個選項。我早些時候嘗試過,它的功能就像一個魅力。 – Arjun

+0

即使僅使用批處理也不能解決問題。爲此,我發佈了http://stackoverflow.com/questions/20240284/infinispan-with-treecacheapi – Arjun