Aby scacheować encję w serwerze JBoss należy opatrzyć ją adnotacją @org.hibernate.annotations.Cache:
import javax.persistence.Entity;
import javax.persistence.Table;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@Entity
@Table(name = "role_permissions")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public class RolePermission extends BaseEntity {
private static final long serialVersionUID = 6778357970340362708L;
private String role;
private String target;
...
}
oraz dodać odpowiednie właściwości do pliku persistence.xml:
<property name="hibernate.cache.provider_class" value="org.jboss.ejb3.entity.TreeCacheProviderHook" /> <property name="treecache.mbean.object_name" value="jboss.cache:service=EJB3EntityTreeCache" />
Dodatkowo należy posiadać odpowiednio skonfigurowany serwer. Są na to dwa sposoby:
- Uruchomienie serwera w konfiguracji
all, - Uruchomienie serwera w konfiguracji
defaultpo jej uprzednim przygotowaniu.
Drugi sposób jest o tyle lepszy, że jest start serwera jest zdecydowanie szybszy, co na maszynie deweloperskiej jest dużym atutem. Konfiguracja all pozwala na klastrowanie, ale komu to potrzebne przy tworzeniu i testowaniu aplikacji?
Aby uruchomić cacheowanie encji przy konfiguracji default (domyślnej) należy skopiować z katalogu $JBOSS_HOME/server/all/lib/ biblioteki jboss-cache-jdk50.jar oraz jgroups.jar do katalogu $JBOSS_HOME/default/lib/.
Dodatkowo należy skopiować plik $JBOSS_HOME/server/all/deploy/ejb3-entity-cache-service.xml do katalogu $JBOSS_HOME/default/deploy/.
I to wszystko – możemy już cieszyć się encjami z pamięci podręcznej.
Poprawność uruchomienia cacheowania można sprawdzić w konsoli JMX serwera JBoss pod adresem http://localhost:8080/jmx-console/ wyszukując usługę *:service=EJB3EntityTreeCache,*, a następnie uruchamiająć akcję printDetails(). Na wynikowym ekranie powinna się znaleźć encja oznaczona adnotacją @Cache.



