2014-09-22 33 views
0

我在爲infinispan配置jdbc-store時遇到了一些問題。 我已經定義了一個本地緩存與此配置:在wildfly-8.1.0中使用jdbc-store的infinispan .Fianl

<cache-container name="MyCacheContainer"> 
    <local-cache name="MyCache"> 
     <expiration max-idle="60000" interval="6000"/> 
    </local-cache> 
</cache-container> 

我需要堅持的緩存,所以我嘗試使用JDBC的存儲,使用此數據源

<datasource jta="true" jndi-name="java:jboss/datasources/MyDS" pool-name="MyDS" enabled="true" use-ccm="true"> 
    <connection-url>jdbc:h2:file:${jboss.server.data.dir}/db;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url> 
    <driver-class>org.h2.Driver</driver-class> 
    <driver>h2</driver> 
    <security> 
     <user-name>abc</user-name> 
     <password>abc</password> 
    </security> 
</datasource> 

當我嘗試配置JDBC店在wildfly Web控制檯我有這個錯誤:

Internal Server Error 
{ 
    "outcome" => "failed", 
    "result" => {"step-1" => undefined}, 
    "failure-description" => "JBAS014883: No resource definition is registered for address [ 
    (\"subsystem\" => \"infinispan\"), 
    (\"cache-container\" => \"MyCacheContainer\"), 
    (\"local-cache\" => \"MyCache\"), 
    (\"jdbc-store\" => \"JDBC_STORE\") 
]", 
    "rolled-back" => true 
} 

如果我手動編輯standalone.xml添加此CONFIGS

<cache-container name="MyCacheContainer"> 
    <local-cache name="MyCache"> 
     <expiration max-idle="60000" interval="6000"/> 
     <string-keyed-jdbc-store preload="false" passivation="false" purge="false" datasource="java:jboss/datasources/MyDS"/> 
    </local-cache> 
</cache-container> 

我對分貝通常的高速緩存序列化,但按預期的數據從數據庫(而不是從內存中)每60000毫秒,無論是空閒的也刪除它不工作。所以,如果我重新啓動wildfly緩存是空的。 此外我注意到Web控制檯仍然說在disableb中的jdbc-store,如果我使用文件存儲而不是jdbc-store所有工作正常,所以我懷疑在我的配置中存在一些問題。

+0

快速提示:我可以看到您已經配置了選項preload =「false」。如果您重新啓動Wildfly(使用您的緩存),那麼數據將不會從商店預加載,因此緩存將爲空。如果您的商店中有一些持久條目,則應在請求時延遲加載。嘗試在重新啓動的緩存中獲取(some_key)。你使用什麼版本的Infinispan? – tsykora 2014-09-24 08:08:13

+0

@tsykora謝謝你的回覆。我試圖獲得一個條目,緩存是空的。按照預期,配置文件相同,但文件存儲工作正常。我使用infinispan 6.0.2.Final – codadilupo 2014-09-24 09:09:23

+0

嗯奇怪。可能是一個錯誤。你也嘗試過二進制密鑰存儲嗎? +嘗試刪除到期設置,看看會發生什麼。並感謝您的信息! – tsykora 2014-09-24 09:44:28

回答

0

關於standalone.xml中的手動配置 - 您必須這麼做,Infinispan應該怎樣知道應該將哪個緩存(通常情況下)保存到此存儲中?

關於最大空閒超時:你說得對,它是意想不到的。當條目被保存到數據庫時,到期日期被寫入那裏。但是,讀取條目時,此時間戳不會更新 - 然後,在清除DB清除時,這些條目也會被刪除。

我不認爲會有任何簡單的解決方案,但我不知道如何與SingleFileStore工作。

+0

已經提交:https://issues.jboss.org/browse/ISPN-3202 – 2014-09-24 10:24:27

+0

謝謝!關於「手動配置」,我的意思是編輯standalone.xml,儘管使用wildfly web控制檯。對於文件存儲,我可以使用Web控制檯,但對於jdbc存儲,我有錯誤,正如我在文章中所述。而且,在standalone.xml中添加jdbc-store並不反映在Web控制檯中。不過,我會再次嘗試使用文件存儲,因爲我認爲它工作正常(報告的錯誤是相對於版本5.2.6.Final) – codadilupo 2014-09-24 12:17:55

+0

好吧,我錯了...文件存儲不起作用。也許我在測試過程中搞砸了。無論如何,我認爲像這樣的錯誤對於具有到期功能的「NoSQL密鑰/值存儲或對象數據庫」是非常非常糟糕的 – codadilupo 2014-09-24 13:06:09

相關問題