2012-07-19 16 views
7

Sto usando ehcache con ibernazione nella mia applicazione. qui è la configurazione di ehcache.xmlEhCache overflow su disco su percorso specifico

<ehcache> 
    <diskStore path="java.io.tmpdir"/>   

    <defaultCache 
      maxElementsInMemory="10" 
      eternal="false" 
      timeToIdleSeconds="120" 
      timeToLiveSeconds="120" 
      overflowToDisk="true" 
      diskSpoolBufferSizeMB="300" 
      maxElementsOnDisk="10000000" 
      diskPersistent="false" 
      diskExpiryThreadIntervalSeconds="120" 
      memoryStoreEvictionPolicy="LRU" 
      /> 
</ehcache> 

il mio percorso diskStore è java.io.tmpdir, che voglio cambiare al mio percorso di applicazione come $ {} WebApp/DiskStore

+0

credo @Pradeep merita una risposta accettata. – anthoon

risposta

9

posizione di archiviazione sono specificato da percorsi di burrone duri.

valori validi per l'attibute percorso sono i percorsi di sistema di file legali.

Ad esempio, per Unix:/home/applicazioni/cache

Il sistema seguenti sono anche legali, nel qual caso essi sono tradotti:

user.home - User's home directory 
user.dir - User's current working directory 
java.io.tmpdir - Default temp file path 
ehcache.disk.store.dir - A system property 

sottodirectory possono essere specificati sotto la proprietà di sistema, ad esempio:

java.io.tmpdir/uno

diventa, in un sistema Unix:

/tmp/one

+0

Abbiamo un server Windows. Specificando il percorso assoluto, funziona. C'è un modo per specificare il percorso in modo dinamico attraverso il codice o il percorso relativo da webApp? –

+0

Credo che nella classe Java possiamo leggere la directory root dell'applicazione, ma qui è necessario farlo nel file xml. quindi non sono sicuro che ci sia una sostituzione per valore dinamico. – NPKR

+0

'java.io.tmpdir' - Percorso del file temporaneo predefinito windows' C: \ Users \ user \ AppData \ Local \ Temp' –

1

È inoltre possibile utilizzare una proprietà che verrà sostituita in fase di compilazione. Pertanto, devi configurare correttamente pom.xml, ad es.

<build> 
    <filters> 
     <filter>${user.home}/my.properties</filter> 
    </filters> 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 
</build> 

(almeno questo era un ambiente per il nostro progetto di lavoro)

1

Ho provato EHCache di recente e si chiedeva che cosa è java.io.tmpdir e dove si trova sulla mia macchina. La risposta accettata in questa pagina non ha risolto il mio problema. Ho controllato /tmp e il file ehcache non è stato trovato.

Ecco quello che ho trovato on-line e spero che aiuta ad altre persone:

1.run env comando sul terminale. Stampa l'ambiente del SO. Nel mio caso, mi ha dato:

TMPDIR=/var/folders/1j/pb3h7_hl7890px72_f8mntd00000gn/T/

2.alternatively, è possibile interrogare dalla console python:

Python 3.5.1 (v3.5.1:37a07cee5969, Dec 5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import tempfile 
>>> tempfile.gettempdir() 
'/var/folders/1j/pb3h7_hl7890px72_f8mntd00000gn/T'