Agente de Instrumentação de Desempenho da Entidade

É possível melhorar o desempenho de entidades de acesso a campo ativando o agente de instrumentação do WebSphere eXtreme Scale ao utilizar o Java Development Kit (JDK) Versão 1.5 ou posterior.

Ativando o Agente do eXtreme Scale no JDK Versão 1.5 ou Acima

O agente ObjectGrid pode ser ativado com uma opção de linha de comandos Java com a seguinte sintaxe:
-javaagent:jarpath[=options]
O valor jarpath é um caminho para um arquivo Java archive (JAR) do tempo de execução do eXtreme Scale que contém a classe do agente do eXtreme Scale e as classes de suporte como os arquivos objectgrid.jar, wsobjectgrid.jar, ogclient.jar, wsogclient.jar e ogagent.jar. Normalmente, em um programa Java ou em um ambiente Java Platform, Enterprise Edition independente que não executa o WebSphere Application Server, use o arquivo objectgrid.jar ou ogclient.jar. Em um ambiente do WebSphere Application Server ou de multicarregadores, é necessário usar o arquivo ogagent.jar na opção do agente da linha de comandos Java. Forneça o arquivo ogagent.config no caminho de classe ou use opções do agente para especificar informações adicionais.

Opções do Agente do eXtreme Scale

config
Substitui o nome do arquivo de configuração.
inclusão
Especifica ou substitui a definição de domínio de transformação que é a primeira parte do arquivo de configuração.
exclude
Especifica ou substitui a definição @Exclude.
fieldAccessEntity
Especifica ou substitui a definição @FieldAccessEntity.
trace
Especifica um nível de rastreio. Os níveis podem ser ALL, CONFIG, FINE, FINER, FINEST, SEVERE, WARNING, INFO e OFF.
trace.file
Especifica o local do arquivo de rastreio.
O ponto e vírgula ( ; ) é utilizado como um delimitador para separar cada opção. A vírgula ( , ) é utilizada como um delimitador para separar cada elemento em uma opção. O seguinte exemplo mostra a opção do agente eXtreme Scale para um programa Java:
-javaagent:objectgridRoot/lib/objectgrid.jar=config=myConfigFile;include=includedPackage;exclude=excludedPackage;fieldAccessEntity=package1,package2

Arquivo ogagent.config

O arquivo ogagent.config é o nome do arquivo de configuração do agente do eXtreme Scale designado. Se o nome do arquivo estiver no caminho de classe, o agente do eXtreme Scale localiza e analisa o arquivo. É possível substituir o nome do arquivo designado por meio da opção config do agente do eXtreme Scale. O exemplo a seguir mostra como especificar o arquivo de configuração:
-javaagent:objectgridRoot/lib/objectgrid.jar=config=myOverrideConfigFile
Um arquivo de configuração do agente do eXtreme Scale possui as seguintes partes:
  • Domínio de transformação: A parte do domínio de transformação é a primeira no arquivo de configuração. O domínio de transformação é uma lista de pacotes e classes que estão incluídos no processo de transformação da classe. Este domínio de transformação deve incluir todas as classes que são classes de entidade field-access e outras classes que fazem referência a estas classes de entidade field-access. As classes de entidade field-access e tais classes que fazem referência a estas classes de entidade field-access constroem o domínio de transformação. Se você planejar especificar classes de entidade field-access na parte @FieldAccessEntity, então não é necessário incluir classes de entidade field-access aqui. O domínio de transformação deve estar completo. Caso contrário, pode ser possível ver uma exceção FieldAccessEntityNotInstrumentedException.
  • @Exclude: O token @Exclude indica que os pacotes e as classes listadas após este token são excluídos do domínio de transformação.
  • @FieldAccessEntity: O token @FieldAccessEntity indica que os pacotes e as classes listados após este token são pacotes e classes Entity field-access. Se não existir nenhuma linha após o token @FieldAccessEntity, então, seu equivalente é "Nenhum @FieldAccessEntity especificado". O agente do eXtreme Scale determina que não há pacotes e classes Entity field-access definidos. Se houver linhas após o token @FieldAccessEntity, então elas representam os pacotes e as classes de entidade de acesso a campos especificados pelo usuário. Por exemplo, "domínio de entidade de acesso a campos". O domínio de entidade de acesso a campos é um subdomínio do domínio de transformação. Os pacotes e as classes que estão listados no domínio de entidade field-access são uma parte do domínio de transformação, mesmo quando não estão listados no domínio de transformação. O token @Exclude, que lista pacotes e classes que são excluídos da transformação, não tem impacto no domínio Entity field-access. Quando o token @FieldAccessEntity é especificado, todas as entidades field-access devem estar este domínio Entity field-access. Caso contrário, uma exceção FieldAccessEntityNotInstrumentedException pode ocorrer.

Arquivo de Configuração do Agente de Exemplo (ogagent.config)

################################
# The # indicates comment line
################################
# This is an ObjectGrid agent config file (the designated file name is ogagent.config) that can be found and parsed by the ObjectGrid agent
# if it is in classpath.
# If the file name is "ogagent.config" and in classpath, Java program runs with -javaagent:objectgridRoot/ogagent.jar will have
# ObjectGrid agent enabled.
# If the file name is not "ogagent.config" but in classpath, you can specify the file name in config option of ObjectGrid agent
#     -javaagent:objectgridRoot/lib/objectgrid.jar=config=myOverrideConfigFile
# See comments below for more info regarding instrumentation setting override.

# The first part of the configuration is the list of packages and classes that should be included in transformation domain.
# The includes (packages/classes, construct the instrumentation doamin) should be in the beginning of the file.
com.testpackage
com.testClass

# Transformation domain: The above lines are packages/classes that construct the transformation domain.
# The system will process classes with name starting with above packages/classes for transformation.
#
# @Exclude token : Exclude from transformation domain.
# The @Exclude token indicates packages/classes after that line should be excluded from transformation domain.
# It is used when user want to exclude some packages/classes from above specified included packages
#
# @FieldAccessEntity token: Field-access Entity domain.
# The @FieldAccessEntity token indicates packages/classes after that line are field-access Entity packages/classes.
# If there is no lilne after the @FieldAccessEntity token, it is equivalent to "No @FieldAccessEntity specified".
# The runtime will consider the user does not specify any field-access Entity packages/classes.
# The "field-acces Entity domain" is a sub-domain of transformation domain.
#
# Packages/classes listed in the "field-access Entity domain" will always be part of transformation domain,
# even they are not listed in transformation domain.
# The @Exclude, which lists packages/classes excluded from transformation, has no impact on the "field-acces Entity domain".
# Note: When @FieldAccessEntity is specified, all field-access entities must be in this field-acces Entity domain,
#       otherwise, FieldAccessEntityNotInstrumentedException may occur.
#
# The default ObjectGrid agent config file name is ogagent.config
# The runtime will look for this file as a resource in classpath and process it.
# Users can override this designated ObjectGrid agent config file name via config option of agent.
#
# e.g.
#	javaagent:objectgridRoot/lib/objectgrid.jar=config=myOverrideConfigFile
#
# The instrumentation definition, including transformation domain, @Exclude, and  @FieldAccessEntity can be overriden individually
# by corresponding designated agent options.
# Designated agent options include:
#    include              -> used to override instrumentation domain definition that is the first part of the config file
#    exclude              -> used to override @Exclude definition
#    fieldAccessEntity    -> used to override @FieldAccessEntity definition
#
# Each agent option should be separated by ";"
# Within the agent option, the package or class should be seperated by ","
#
# The following is an example that does not override the config file name:
#    -javaagent:objectgridRoot/lib/objectgrid.jar=include=includedPackage;exclude=excludedPackage;fieldAccessEntity=package1,package2
#
################################

@Exclude
com.excludedPackage
com.excludedClass

@FieldAccessEntity

Considerações sobre Desempenho

Para obter melhor desempenho, especifique o domínio de transformação e o domínio de entidade field-access.