Configurando o Plug-in de Cache OpenJPA

É possível configurar ambas as implementações DataCache e QueryCache parao OpenJPA.

Antes de Iniciar

Procedimento

  1. 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.
  2. No arquivo persistence.xml, você também deve configurar a propriedade openjpa.RemoteCommitProvider como sjvm.
    <property name="openjpa.RemoteCommitProvider" value="sjvm"/>
  3. 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.

  4. 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