É possível configurar ambas as implementações DataCache e QueryCache parao OpenJPA.
Antes de Iniciar
- Você deve determinar a topologia do plug-in do cache JPA que deseja usar. Consulte Plug-in do Cache JPA Nível 2 (L2) para obter mais informações
sobre as diferentes configurações e sobre as propriedades para configurar cada topologia.
- Você deve ter um aplicativo que usa as APIs do JPA. Se desejar usar APIs do WebSphere eXtreme
Scale para acessar os dados com o JPA, use o carregador JPA. Para
obter informações adicionais, consulte
Configurando Utilitários de Carga do JPA.
Procedimento
- Configure as propriedades no arquivo persistence.xml para configurar o plug-in do cache do OpenJPA: Essas propriedades podem ser configuradas em uma implementação de cache DataQuery ou Query.
As
configurações DataCache e QueryCache são independentes uma da outra. É possível
ativar qualquer uma das configurações. Entretanto, se as duas estiverem ativadas, a configuração do QueryCache utilizará a mesma configuração que a do DataCache e suas propriedades de configuração serão
descartadas.
<property name="openjpa.DataCache"
value="<object_grid_datacache_class(<property>=<value>,...)"/>
ou
<property name="openjpa.QueryCache"
value="<object_grid_querycache_class(<property>=<value>,...)"/>
Nota: É possível ativar a configuração de QueryCache somente para
topologias integradas e intradomínio integradas.
Você pode executar a propriedade ObjectGridName, a propriedade ObjectGridType e outras propriedades relacionadas à política de implementação simples na lista de propriedades da classe do cache ObjectGrid para customizar a configuração do cache. Este é um exemplo:
<property name="openjpa.DataCache"
value="com.ibm.websphere.objectgrid.openjpa.ObjectGridDataCache(
ObjectGridName=BasicTestObjectGrid,ObjectGridType=EMBEDDED,
maxNumberOfReplicas=4)"/>
<property name="openjpa.QueryCache"
value="com.ibm.websphere.objectgrid.openjpa.ObjectGridQueryCache()" />
<property name="openjpa.RemoteCommitProvider" value="sjvm"/>
Consulte
Propriedades de Configuração do Cache JPA para obter uma lista de propriedades que podem ser configuradas.
- No arquivo persistence.xml, você também deve configurar a propriedade openjpa.RemoteCommitProvider como sjvm.
<property name="openjpa.RemoteCommitProvider" value="sjvm"/>
- Opcional: Para customizar ainda mais a grade de dados usada pelo cache, é possível fornecer configurações adicionais com arquivos XML.
Para a maioria dos cenários, a configuração das propriedades de cache devem ser suficientes.
Para customizar ainda mais o ObjectGrid usado pelo cache, é possível fornecer os arquivos XML de configuração OpenJPA ObjectGrid no diretório META-INF semelhante ao arquivo persistence.xml . Durante a inicialização, o cache tenta localizar esses arquivos XML e processa-os se localizados.
Há três tipos de arquivos XML de configuração do OpenJPA ObjectGrid:
- openjpa-objectGrid.xml (Configuração ObjectGrid)
Caminho do
arquivo: META-INF/openjpa-objectGrid.xml
Este arquivo é utilizado para customizar a configuração do ObjectGrid
para os tipos EMBEDDED e EMBEDDED_PARTITION. Com o tipo REMOTE, este
arquivo é ignorado.
Por padrão, cada classe de entidade é mapeada
para sua própria configuração do BackingMap denominada como um nome
de classe de entidade na configuração do ObjectGrid.
Por exemplo, a
classe de entidade com.mycompany.Employee é mapeada para o BackingMap
com.mycompany.Employee. A configuração padrão do BackingMap é readOnly="false", copyKey="false", lockStrategy="NONE"
e copyMode="NO_COPY". É possível customizar alguns
BackingMaps com uma configuração escolhida. A palavra-chave reservada
ALL_ENTITY_MAPS pode ser utilizada para representar todos os mapas,
exceto outros mapas customizados listados no arquivo
openjpa-objectGrid.xml. Os BackingMaps que não estiverem listados neste
arquivo openjpa-objectGrid.xml utilizarão a configuração padrão. Se os BackingMaps customizados não especificarem o atributo ou as propriedades de BackingMaps e estes atributos forem especificados
na configuração padrão, os valores de atributo da configuração
padrão serão aplicados. Por exemplo, se uma classe de entidade for anotada com timeToLive=30,
a configuração padrão do BackingMap para essa entidade terá timeToLive=30.
Se o arquivo openjpa-objectGrid.xml customizado também incluir esse BackingMap
mas não especificar o valor timeToLive, o BackingMap customizado
terá timeToLive=30 por padrão. O arquivo
openjpa-objectGrid.xml pretende substituir ou estender a configuração
padrão.
- openjpa-objectGridDeployment.xml (política de
implementação)
Caminho do arquivo: META-INF/openjpa-objectGridDeployment.xml
Este arquivo é utilizado para customizar a política de implementação. Ao
customizar a política de implementação, se o arquivo openjpa-objectGridDeployment.xml
for fornecido, a política de implementação padrão será descartada. Todos os valores de atributo da política de implementação são fornecidos pelo arquivo openjpa-objectGridDeployment.xml.
- openjpa-objectGrid-client-override.xml (configuração de substituição do cliente
ObjectGrid)
Caminho do arquivo: META-INF/openjpa-objectGrid-client-override.xml
Esse arquivo é usado para customizar um ObjectGrid do lado do cliente. Por padrão, o cache do
ObjectGrid aplica uma configuração do ObjectGrid de substituição do cliente que desativa um cache
local. Se um aplicativo requerer um cache perto, ele pode fornecer
este arquivo e especificar numberOfBuckets="xxx".
A substituição do cliente padrão desativa o cache perto ao configurar numberOfBuckets="0".
O cache perto pode estar ativo ao reconfigurar numberOfBuckets com um
valor maior que 0 com o arquivo openjpa-objectGrid-client-override.xml.
O arquivo openjpa-objectGrid-client-override.xml funciona da mesma forma que o arquivo openjpa-objectGrid.xml:
Ele substitui ou estende a configuração padrão de substituição do ObjectGrid
cliente.
Dependendo da topologia do
eXtreme Scale configurada, é possível
fornecer qualquer um destes três arquivos XML para customizar essa
topologia.
Para ambos os tipos EMBEDDED e EMBEDDED_PARTITION, é
possível fornecer qualquer um dos três arquivos XML para customizar o
ObjectGrid, a política de implementação e a configuração de substituição
do ObjectGrid cliente.
Para um
REMOTE ObjectGrid, o cache ObjectGrid não cria um ObjectGrid dinâmico. Em vez disso, ele obtém um ObjectGrid do lado do cliente
a partir do serviço do catálogo. É
possível fornecer apenas o arquivo openjpa-objectGrid-client-override.xml
para customizar a configuração de substituição do ObjectGrid cliente.
- Opcional: (Apenas configurações remotas) Configure o sistema eXtreme Scale externo se desejar configurar um cache com um tipo de ObjectGrid REMOTE.
É necessário configurar um sistema eXtreme Scale externo se desejar configurar um cache com um tipo de ObjectGrid REMOTE. É necessário ambos os arquivos XML de configuração ObjectGrid e ObjectGridDeployment, que se baseiam no arquivo persistence.xml, para configurar um sistema externo. Para obter exemplos desses arquivos de configuração, consulte Exemplo: Arquivos XML do ObjectGrid OpenJPA.
Resultados
Configuração EMBEDDED, EMBEDDED_PARTITIONou intradomínio:
Quando um aplicativo é iniciado, o plug-in detecta ou inicia automaticamente um serviço de catálogo, inicia um servidor de contêiner e conecta os servidores de contêiner no serviço de catálogo. Em seguida, o plug-in se comunica com o contêiner ObjectGrid
e seus equivalentes que estão em execução em outros processos do servidor
de aplicativos que usam a conexão do cliente.
Configuração REMOTE:
A política de implementação é especificada separadamente do aplicativo JPA.
Um sistema do ObjectGrid
externo possui ambos os processos de serviço de catálogo e servidor de contêiner. É necessário iniciar um serviço de catálogos antes de iniciar servidores de contêiner. Consulte Iniciando Servidores Independentes e Iniciando Servidores de Contêiner para obter mais informações.
O que Fazer Depois
- Desenvolva um aplicativo OpenJPA que use a configuração. Para
obter informações adicionais, consulte
Exemplo: Usando o Plug-in Hibernate para Pré-Carregar Dados no Cache do ObjectGrid.
- Em um ambiente de produção, crie domínios do serviço de catálogo para seus processos criados automaticamente para sua configuração EMBEDDED ou EMBEDDED_PARTITION.
- Ambiente independente:
Se
você não estiver executando seus servidores dentro de um processo do WebSphere Application Server, os hosts e as portas do domínio do serviço de catálogo serão especificados usando o arquivo de propriedades
denominado objectGridServer.properties. Este arquivo deve ser
armazenado no caminho de classe do aplicativo e ter a propriedade catalogServiceEndPoints definida. O domínio de serviço de catálogo é iniciado independentemente dos processos do aplicativo e deve ser iniciado antes que os processos do aplicativo sejam iniciados.
O formato do arquivo objectGridServer.properties é:
catalogServiceEndPoints=<hostname1>:<port1>,<hostname2>:<port2>
- Ambiente do WebSphere Application Server:
Se você
estiver executando dentro de um processo do WebSphere Application Server, o plug-in do cache JPA conectará automaticamente ao serviço de catálogo ou ao domínio do serviço de catálogo definido
para a célula do WebSphere Application Server.
- Quando estiver usando o valor de ObjectGridType EMBEDDED ou EMBEDDED_PARTITION
em um ambiente do Java SE,
use o método System.exit(0) no final do programa para parar
o servidor eXtreme Scale integrado. Caso contrário, o
programa poderá parecer não estar respondendo.