2011-01-25 43 views
5

我一直在嘗試使用ehcache配置JPA,但至今沒有成功。其中我做配置:無法使用ehcache配置JPA

  • 的persistence.xml

    <persistence-unit name="customDatabase"> 
        <jta-data-source>jdbc/oracleXE_DS</jta-data-source> 
        <class>com.td.waw.cse.entities.Product</class> 
        <properties> 
            <property name="openjpa.Log" value="DefaultLevel=TRACE, Runtime=INFO, Tool=INFO, SQL=TRACE"/> 
          <property name="openjpa.QueryCache" value="net.sf.ehcache.openjpa.datacache.EhCacheQueryCache"/> 
        <property name="openjpa.DataCacheManager" value="net.sf.ehcache.openjpa.datacache.EhCacheDataCacheManager"/> 
        <property name="openjpa.DataCache" value="net.sf.ehcache.openjpa.datacache.EhCacheDataCache"/> 
        <property name="openjpa.RemoteCommitProvider" value="net.sf.ehcache.openjpa.datacache.NoOpRemoteCommitProvider"/> 
    </properties> 
    
  • ehcache.xml中

    <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:noNamespaceSchemaLocation="ehcache.xsd" 
         updateCheck="true" monitoring="autodetect" 
         dynamicConfig="true" > 
        <defaultCache 
        maxElementsInMemory="1000" 
        eternal="false" 
        timeToIdleSeconds="300" 
        timeToLiveSeconds="600" 
        overflowToDisk="false" 
        memoryStoreEvictionPolicy="LRU" 
        /> 
    
        <!-- OpenJPA data cache --> 
        <cache name="openjpa" 
        maxElementsInMemory="5000" 
        eternal="false" 
        timeToIdleSeconds="300" 
        timeToLiveSeconds="600" 
        overflowToDisk="false" 
        memoryStoreEvictionPolicy="LRU" 
        /> 
    
        <!-- OpenJPA query cache --> 
        <cache name="openjpa-querycache" 
        maxElementsInMemory="1000" 
        eternal="false" 
        timeToIdleSeconds="300" 
        timeToLiveSeconds="600" 
        overflowToDisk="false" 
        memoryStoreEvictionPolicy="LRU" 
        /> 
    </ehcache> 
    
  • Product.java

    @Entity 
    @Table(name="PRODUCT") 
    @NamedQueries({@NamedQuery(name="getAllProducts", query = "select products from Product products")}) 
    public class Product implements Serializable {} 
    

我沒有收到任何異常,但我看不到ehcache在日誌中打印的特定ehcache。 我真的很感激,如果有人可以在這方面提供幫助。

+0

Stack Overflow是_not_一個論壇,請不要發佈一個答案不能解決你問題中的問題。如果你發現自己發佈很長的代碼片段,它們應該是你的_question_的一部分。我已經刪除了你的幾個答案。 – 2011-08-21 19:22:18

回答

4

persistence.xml中添加以下屬性:

<property name="openjpa.QueryCache" value="ehcache"/> 
<property name="openjpa.DataCacheManager" value="ehcache"/> 

添加下面的罐子在classpath中:ehcache-core-2.4.4.jarehcache-openjpa-0.2.0.jarslf4j-api-1.6.1.jar

就是這樣。

罐下載:

參考