Hibernate 2e cache de niveau
Salut, j'ai certains problèmes avec hibernate 2ème niveau de cache.
En tant que fournisseur de cache-je utiliser ehcache.
Partie de la config à partir de persistence.xml
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.EhCacheProvider" />
<property name="hibernate.cache.provider_configuration_file_resource_path" value="/ehcache.xml" />
- Je configurer mon entités à l'aide d'annotations donc:
@Cache(région = "Kierunek", usage = CacheConcurrencyStrategy.READ_WRITE) public class Kierunek implémente Serializable {
les importations de ces annotations sont:
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
mon ehcache.xml
<diskStore path="java.io.tmpdir" />
<defaultCache maxElementsInMemory="10000" eternal="false"
timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true"
diskSpoolBufferSizeMB="30" maxElementsOnDisk="10000000"
diskPersistent="false" diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU" />
<cache name="Kierunek" maxElementsInMemory="1000"
eternal="true" overflowToDisk="false" memoryStoreEvictionPolicy="LRU" />
Et toute idée de pourquoi je reçois d'erreur suivant ?
WARNING: Could not find a specific ehcache configuration for cache named [persistence.unit:unitName=pz2EAR.ear/pz2EJB.jar#pz2EJB.Kierunek]; using defaults.
19:52:57,313 ERROR [AbstractKernelController] Error installing to Start: name=persistence.unit:unitName=pz2EAR.ear/pz2EJB.jar#pz2EJB state=Create
java.lang.IllegalArgumentException: Cache name cannot contain '/' characters.
solution est d'ajouter une autre propriété persistence.xml
<property name="hibernate.cache.region_prefix" value=""/>
et qui supprime défaut du préfixe big thx ruslan!
Vous devriez entièrement épeler le mot "niveau" au lieu de "lvl". C'est plus lisible et seachable.
Vous êtes de droite. J'ai écrit cet être plutôt frustré, alors je n'avais pas pensé ^^ merci
Vous êtes de droite. J'ai écrit cet être plutôt frustré, alors je n'avais pas pensé ^^ merci
OriginalL'auteur Dogrizz | 2009-04-19
Vous devez vous connecter pour publier un commentaire.
À mon humble avis, vous obtenez le générés nom de la région pour votre classe. Cela a généré nom de "persistance.unité:unitName=pz2EAR.oreille/pz2EJB.jar#pz2EJB.pl.bdsdev.seps.encje.Kierunek". Et ce n'est pas définie dans le votre ehcache.xml la configuration. Aussi, il est à la recherche pour le nom prédéfini, donc il ne peut pas utiliser la valeur par défaut de la région.
Comme une option pour résoudre ce problème, vous pouvez utiliser @Cache propriétés des annotations de prédéfinir certains nom de la région, comme
Et dans ehcache.xml
Bienvenue. J'ai vérifié la documentation. Ils ont dit que par défaut nom de la région est un nom de classe entièrement qualifié. Ce une grosse erreur dans la documentation, ils doivent le réparer le plus vite possible, car il n'est pas clair, en tout cas.
il a travaillé pendant 2 deploymnets et maintenant je reçois: AVERTISSEMENT: impossible de trouver un ehcache de configuration pour le cache nommé [persistance.unité:unitName=pz2EAR.oreille/pz2EJB.jar#pz2EJB.Kierunek]; à l'aide de valeurs par défaut. 19:52:57,313 ERREUR [AbstractKernelController] Erreur lors de l'installation pour Commencer: nom=persistance.unité:unitName=pz2EAR.oreille/pz2EJB.jar#pz2EJB état=Créer java.lang.IllegalArgumentException: Cache de nom ne peut pas contenir le caractère " / " des personnages. Il voit le nom de la région définie dans l'annotation, mais ajoute de rechange préfixe..
Ce hibernate version utilisez-vous? Peut-être que vous aurez besoin de la prochaine fournisseur de cache classe pour ehcache org.mise en veille prolongée.le cache.EhCacheProvider. Nous avons utilisé la prochaine propriété hibernate hibernate.le cache.region_prefix, par exemple <property name="hibernate.le cache.region_prefix" value=""/> Essayez ceci. J'espère que ça aidera.
<property name="hibernate.le cache.region_prefix" value=""/> qui a résolu le problème. un grand merci ^^
OriginalL'auteur ruslan
Hibernate ajouter un préfixe à mettre en cache les noms basés sur le nom ou la valeur de la propriété hibernate.le cache.region_prefix
Si Vous définissez cette propriété pour "" (chaîne vide), alors Vous avez régions nommé exactement comme nom dans hibernate config.
OriginalL'auteur vorp
EHCache besoin d'une configuration qui lui indique comment mettre en cache les objets dans votre application (durée de vie, type de cache, cache, cache comportement, etc). Pour chaque classe que vous essayez de cache, il va essayer de trouver la bonne configuration de cache et d'imprimer l'erreur ci-dessus s'il ne parvient pas à le faire.
Voir http://ehcache.sourceforge.net/documentation/configuration.html pour savoir comment configurer EHCache.
OriginalL'auteur fforw