![[z/OS]](../images/ngzos.gif)
Conceitos de Proxy Dinâmico do Java Management Extensions
Um proxy dinâmico JMX (Java™ Management Extensions) coordena os pedidos de MBean entre servidores com vários processos. Esta seção descreve os principais termos associados a um proxy dinâmico de JMX.
- Processo de controle
- Recebe pedidos e os distribui para processos servants para que o servidor de aplicativos possa executar trabalho para os pedidos.
- Processo servant
- Recebe trabalho do processo de controle e executa o trabalho.
- Opção unicall versus a opção multicall
- Utilize a opção unicall no método proxyInvocationType quando um pedido
chamar um processo servant ou processos servants arbitrários.
Utilize a opção
multicall no método proxyInvocationType quando um pedido for dirigido a vários processos
servants e os processos servants retornarem resultados diferentes.
O exemplo a seguir mostra um descritor MBean que foi desenvolvido para um único modelo de processo (antes) e modificado para um modelo de multiprocessamento (depois).
Antes
Depois<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd"> <MBean type="SampleStateMBean" version="6.0" description="Sample State MBean for the documentation example."> <attribute description="The name of the MBean." getMethod="getMBeanName" name="mbeanName" type="java.lang.String"/> <attribute description="O estado do MBean."name="state" getMethod="getState" setMethod="setState" type="java.lang.String"/> <operation description="Initialize the State MBean." impact="ACTION" name="initializeState" role="operation" targetObjectType="objectReference" type="void"> <signature> <parameter description="The name of the MBean." name="mbeanName" type="java.lang.String"/> <parameter description="The initial state of the MBean." name="mbeanName" type="java.lang.String"/> </signature> </operation> </MBean>
Faça com que o MBean do usuário seja executado no modo de proxy dinâmico especificando dynamicproxy no atributo da plataforma. Se nenhum atributo de plataforma existir no descritor do MBean, o MBean do usuário implementado no WebSphere Application Server para z/OS utilizará automaticamente o modo de proxy dinâmico.<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE MBean SYSTEM "MbeanDescriptor.dtd"> <MBean type="SampleStateMBean" version="6.0" platform="dynamicproxy" description="Sample State MBean for the documentation example."> <attribute description="The name of the MBean." getMethod="getMBeanName" name="mbeanName" type="java.lang.String"/> <attribute description="O estado do MBean."name="state" getMethod="getState" setMethod="setState" type="java.lang.String"/> proxyInvokeType="unicall" proxySetterInvokeType="multicall"/> <operation description="Initialize the State MBean." impact="ACTION" name="initializeState" role="operation" targetObjectType="objectReference" type="void" proxyInvokeType="multicall"> <signature> <parameter description="The name of the MBean." name="mbeanName" type="java.lang.String"/> <parameter description="The initial state of the MBean." name="mbeanName" type="java.lang.String"/> </signature> </operation> </MBean>
Atualize a marcação XML do atributo ou a marcação XML da operação, conforme mostrado no exemplo "Depois", para especificar o comportamento de unicall ou de multicall no ambiente de multiprocessamento. Se não existir nenhuma opção proxyInvokeType ou proxySetterInvokeType, o comportamento usará como padrão um dos seguintes valores:proxyInvokeType=unicall (para o getMethod) proxyInvokeType=multicall (para o setMethod)
No exemplo "Depois", os métodos getMBeanName e getState são executados com o comportamento unicall. Os métodos setState e initializeState são executados com o comportamento multicall.
- Modelo de processo único
- O servidor de aplicativos do processo único possui um tempo de execução do servidor. O MBean geralmente atua em uma instância de cada componente de tempo de execução principal: um contêiner Enterprise JavaBeans (EJB), um contêiner da Web, um gerenciador de conexões Java 2 Platform, Enterprise Edition (J2EE) e assim por diante. Esse modelo presume que cada chamada de MBean no servidor é executada no mesmo processo e na mesma JVM (Java Virtual Machine).
- Modelo de multiprocessamento
- O modelo de multiprocessos avalia se uma instância de servidor único é uma associação
de JVMs (Java virtual
machines), que são executadas em um processo operacional separado. O processo de controle é responsável por essas funções do servidor, como nós de extremidade
da comunicação, autorização, recuperação de recursos e gerenciamento da carga de trabalho. As
outras JVMs são JVMs trabalhadoras, nas quais os pedidos de aplicativos são executados. Essas JVMs são direcionadas a partir do processo de controle e interagem apenas com eles.
Todos os pedidos de entrada e transmissão passam pelo processo de controle. Os pedidos dos clientes chegam no processo de controle. O processo de controle, com a assistência do MVS WLM (Workload Manager), envia o trabalho para os processos servant.
O número de processos servants é gerenciado pelo WLM e varia de acordo com a demanda. A demanda é medida em relação aos objetivos de desempenho específicos da instalação, expressos como critério WLM. Cada processo servant é idêntico e hospeda os componentes necessários do servidor de aplicativos para ativar o modelo de programação de aplicativos J2EE. Os processos servants dependem do processo de controle de vários serviços, como comunicação, segurança e controle de transação.
O modelo de multiprocessos impõe demandas adicionais sobre a infraestrutura JMX (Java Management Extension) pelo modelo de processo único. Os pedidos administrativos a um servidor de multiprocessamento requerem, freqüentemente, coordenação entre os processos que compõem o servidor de aplicativos. A infraestrutura do JMX inclui recursos adicionais para ativar essa coordenação.
- Suporte ao objeto de estado para o MBean do proxy dinâmico
- Classe com.ibm.websphere.management.dynamicproxy.StateObject: O provedor de MBean estende a classe abstrata StateObject. Especifique a subclasse da classe StateObject para que o tempo de execução de JMX possa instanciá-la antes que o MBean do proxy dinâmico conclua sua inicialização. O tempo de execução do JMX conecta a classe StateObject à interface de Rotina de Tratamento de Chamada do proxy dinâmico para manter o controle do estado atual do proxy dinâmico antes e depois da execução do método MBean. O tempo de execução do JMX também conecta a classe StateObject à classe de interface de Agregação de Resultados, assim como à classe de interface de Rotina de Tratamento de Eventos para suportar o aplicativo de agregação apropriado.
- Interface de suporte à rotina de tratamento de agregação de resultados
- classe com.ibm.websphere.management.dynamicproxy.AggregationHandler: a interface de suporte do manipulador de agregação de resultados define o método que um provedor de MBean utiliza para tratar a agregação de resultados em um MBean do WebSphere Application Server para z/OS ativado para proxy dinâmico. Especifique o atributo aggregationHandlerClass na marcação XML do MBean MBeanDescriptor. Implemente a interface para métodos MBean que utilizem a opção multicall de proxyInvokeType e que retornam um valor. A interface determina o método para o qual essa agregação é processada. Em seguida, ela agrega adequadamente todos os resultados de MBean do servant que os processos servants retornam para o processo de controle e compila um único resultado para retornar ao responsável pela chamada.
- Interface de suporte à rotina de tratamento de agregação de eventos
- classe de interface com.ibm.websphere.management.dynamicproxy.EventHandler: a interface de suporte do manipulador de agregação de eventos define o método que um provedor de MBean utiliza para tratar a agregação de eventos em um MBean do WebSphere Application Server para z/OS ativado para proxy dinâmico. Especifique o atributo eventHandlerClass na marcação XML do MBean MBeanDescriptor. A interface trata de todos os eventos MBean servants de entrada e os agrega para remover eventos duplicados dos vários MBeans servants. Ela retorna um evento para o atendente do MBean do proxy dinâmico. A interface acerta o estado atual do MBean do proxy dinâmico de acordo com os requisitos do provedor Mbean
- Interface de suporte à rotina de tratamento de chamada
- classe com.ibm.websphere.management.dynamicproxy.InvocationHandler: a interface de suporte do manipulador de chamadas define os métodos preInvoke e postInvoke que um MBean de proxy dinâmico do WebSphere Application Server para z/OS implementa quando requer informações de gerenciamento de estado. O MBean utiliza as informações para coordenar com os MBeans servants em casos em que o tipo de chamada multicall é requerido. Especifique o atributo invocationHandlerClass na marcação XML do MBean MBeanDescriptor. Utilize a interface para MBeans do proxy dinâmico que requerem gerenciamento de estado antes e depois da chamada de um método que altera seu estado.
- MBean do Usuário
- O MBean do usuário reside no processo servant e trata dos pedidos por meio
de seu MBean do proxy criado dinamicamente, que é executado dentro do processo de controle. Um provedor de MBean pode empacotar rotinas de tratamento com o MBean do usuário para que o provedor seja conectado a seu próprio processamento especializado nas seguintes situações:
- Agregação de resultados
- Agregação de eventos
- Tratamento de chamada
- Gerenciamento do estado dos objetos