Ehcache + jpa + hibernate 3 + jboss 4.2.3 --- problemas

5 respostas
donatinho

Bom dia pessoal!

Estou com um problema sinistro. Tenho um MVC inplementado com a Model totalmente desacoplada do Controller. Assim, tenho um persistence.xml e um ehcache.xml para fazer o cache das tabela mais usadas na aplicacao.

O ambient esta assim:

Model
  |_ Fontes
        |_ META-INF
        |      |_persistence.xml
        |_ ehcache.xml

Dentro do persistence.xml tem as referencias

<properties>
   		<property name="hibernate.show_sql" value="true" />
		<property name="hibernate.cache.provider_class"  value="org.hibernate.cache.EhCacheProvider"/>  
     	<property name="hibernate.cache.provider_configuration"   value="/ehcache.xml" />  
    	
    	<property name="hibernate.cache.use_query_cache"          value="true" />  
     	<property name="hibernate.cache.use_second_level_cache"   value="true"/>  
       	<property name="hibernate.cache.use_structured_entries"   value="true" />  
   </properties>

So que, quando inicio o jboss, nao gera erro a aplicacao e nao faz cache das tabelas configuradas no ehcache.xml

O que tem de erro?

Alguem poderia me ajudar?

ATt

donatinho :roll:

5 Respostas

P

Se não me engano, você tem que colocar a anotação @Cached nas entidades.

donatinho

Boa tarde Pozzo!

te dou o exemplo de uma das minhas entidades

package br.inf.aplicacao.alfa.vo;
import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Tbparametro implements Serializable {
	@Id
	@Column(name="SG_PARAMETRO")
	private String sgParametro;

	@Column(name="VR_PARAMETRO")
	private String vrParametro;

	private static final long serialVersionUID = 1L;

	/**************************Contrutuores *************************/
	public Tbparametro() {
		
	}
	
	
	public Tbparametro(String sgParametro, String vrParametro) {		
		this.sgParametro = sgParametro;
		this.vrParametro = vrParametro;
	}

	public String getSgParametro() {
		return this.sgParametro;
	}

	public void setSgParametro(String sgParametro) {
		this.sgParametro = sgParametro;
	}

	public String getVrParametro() {
		return this.vrParametro;
	}

	public void setVrParametro(String vrParametro) {
		this.vrParametro = vrParametro;
	}
}

Como voce pode ver, as minhas entidades estao com o @Cache

E mesmo com a adicao de @Cache, o ehCache nao esta funcionando

tu sabe o porquê???

:roll:

P

Como você sabe que não está funcionando? Porque, até onde lembro, o cache é construido conforme os objetos são pesquisados pelo id ou em resultados de queries (você indica) que devem ser cacheadas. Verifique no jmx-console do teu container se aparecem as “regions” do cache e os respectivos objetos cacheados.

donatinho

Porque o parametro

do persistence.xml esta habilitadoe o ehcache.xml esta configurado para fazer uma sentenca sql a cada 5 minutos.

Desta forma, a partir do momento em que o tempo é >= a 5, ele deveria fazer uma sentenca sql no banco de dados e exibir a sentenca no console.

Coisa que nao esta fazendo…

:frowning:

configuracao de ehcache.xml

donatinho

Bom, nao sei se tem a ver com o problema, mas achei uma coisa muito estranha…

o EhCacheProvider nao consegue achar a configuracao do meu vo

[EhCacheProvider] Could not find configuration [CTE-0071_ear,CTE_HIBERNATE.br.inf.aplicacao.alfa.vo.Tbparametro]; using defaults.

isso eu reparei ao usar a seguinte biblioteca para identificar a minha entidade.

import javax.persistence.Entity;

aqui esta a minha entidade

package br.inf.aplicacao.alfa.vo;
import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_ONLY)
public class Tbparametro implements Serializable {
	@Id
	@Column(name="SG_PARAMETRO")
	private String sgParametro;

	@Column(name="VR_PARAMETRO")
	private String vrParametro;

	private static final long serialVersionUID = 1L;

	/**************************Contrutuores *************************/
	public Tbparametro() {
		super();
	}
	
	
	public Tbparametro(String sgParametro, String vrParametro) {
		super();
		this.sgParametro = sgParametro;
		this.vrParametro = vrParametro;
	}


	


	public String getSgParametro() {
		return this.sgParametro;
	}

	public void setSgParametro(String sgParametro) {
		this.sgParametro = sgParametro;
	}

	public String getVrParametro() {
		return this.vrParametro;
	}

	public void setVrParametro(String vrParametro) {
		this.vrParametro = vrParametro;
	}

}

Alguem sabe o porquê?

Esta faltando alguem jar?

:roll:

donatinho

Criado 26 de abril de 2010
Ultima resposta 26 de abr. de 2010
Respostas 5
Participantes 2