Grupo de Comandos EJB

O grupo de comandos EJB para o objeto AdminTask fornece comandos que podem ser usados para manipular os enterprise beans.

removeAutomaticEJBTimers

Os aplicativos ou módulos usam anotações ou o XML para instruir o servidor de aplicativos a criarem automaticamente timers EJB.

Os timers criados automaticamente são persistidos na instância do planejador associado ao servidor no qual o aplicativo ou o módulo está em execução no momento em que o timer EJB automático é criado. Os planejamentos são configurados basicamente por servidor, de modo que cada servidor na sua topologia possa usar uma instância do planejador exclusiva. Nesse caso, a instância do planejador específica para cada servidor suporta os timers EJB em execução nesse servidor.

Cada instância do planejador é associada a um conjunto de tabelas de banco de dados. Se você tiver várias instâncias do planejador, configure cada instância do planejador com um prefixo exclusivo para assegurar que a instância seja mapeada para um conjunto exclusivo de tabelas de banco de dados.

Quando um aplicativo ou módulo que solicitou os timers EJB automáticos são removidos de um servidor, os timers EJB automáticos devem ser removidos da instância do planejador correspondente. Se o aplicativo ou módulo foi instalado em vários servidores e cada um desses servidores usarem uma instância do planejador exclusiva, os timers deverão ser removidos de cada uma dessas instâncias do planejador. Em outras palavras, timers EJB criados automaticamente são removidos basicamente por servidor.

Em alguns casos, a remoção ou a atualização do aplicativo ou módulo resulta na remoção dos timers EJB criados automaticamente da instância do planejador. Nesse cenário, nenhuma ação do usuário é necessária.

Entretanto, em outros casos, a remoção ou a atualização do aplicativo ou módulo não resulta na remoção dos timers EJB criados automaticamente da instância do planejador. Nesse caso, você deve remover manualmente os timers EJB usando o comando removeAutomaticEJBTimers.

O comando é suportado apenas em um modo conectado. Em uma topologia de implementação de rede, o gerenciador de implementação, NodeAgent, e o servidor gerenciado que contém a instância do planejador devem estar em execução. Em uma topologia de base, o servidor independente deve estar em execução.

Em um cenário de configuração livre do Rational Application Developer, você deve remover manualmente seus timers EJB criados automaticamente. Além disso, os timers EJB criados programaticamente, que não são os mesmos que os timers EJB criados automaticamente, não são removidos automaticamente ou removidos por esse comando.

Em uma topologia de implementação de rede, quando um módulo único estiver instalado apenas em um subconjunto de servidores na topologia, os timers criados automaticamente associados a esse módulo devem ser removidos de uma ou mais instâncias do planejador associadas apenas a esse subconjunto de servidores. Uma instância do planejador correspondente a um servidor que não possui o módulo instalado nele não precisa ser eliminada.

Objeto de Destino: Nenhum

Parâmetros necessários:
-appName
O nome do aplicativo que solicitou os timers EJB criados automaticamente que deseja remover. (Cadeia, necessário)

-serverName
O nome do servidor que executa o aplicativo ou o módulo que contém os timers EJB criados automaticamente que deseja remover. Esse parâmetro representa o nome lógico de um servidor de aplicativos e não um nome do host. (Cadeia, necessário)
Parâmetros opcionais:
-schedulerJNDIName
Esse parâmetro representa o nome de JNDI da instância do planejador que persiste os timers EJB criados automaticamente que deseja remover.

Uma instância do servidor é configurada para usar sempre uma instância do planejador particular para suportar timers EJB criados automaticamente. É possível configurar explicitamente qual instância do planejador é usada ou poderá optar por não configurar explicitamente uma instância do planejador. No último caso, uma instância do planejador padrão é usada.

Se a instância do planejador que contém os timers EJB criados automaticamente que deseja remover for a mesma que a instância do planejador que é configurada atualmente para o servidor, poderá omitir esse parâmetro. Nesse caso, o comando examina a configuração, descobre a instância do planejador que está configurada atualmente e a usa.

Entretanto, se a instância do planejador que está atualmente configurada não usar aquela que contêm os timers EJB que deseja remover, especifique o nome de JNDI da instância do planejador que não contenha esses timers. (Sequência, opcional)

-nodeName
O nome do nó que contém o servidor. (Cadeia, necessário)
-moduleName
O nome do módulo que solicitou os timers EJB criados automaticamente que deseja remover. Se desejar remover todos os timers criados automaticamente no aplicativo, independente em qual módulo eles foram definidos, esse parâmetro será omitido. Esse parâmetro é especificado apenas quando deseja remover os timers criados automaticamente solicitados por um módulo no aplicativo, mas não os timers solicitados por outro módulo no mesmo aplicativo. (Sequência, opcional)

Valor de Retorno: Nenhum

As seguintes informações ajudam a determinar quando esse comando é necessário:
  • O WebSphere Application Server tenta remover automaticamente timers EJB criados automaticamente quando todas as seguintes condições forem atendidas:
    • Uma das seguintes ações é executada:
      • Desinstalação do aplicativo
      • Atualização do aplicativo
      • Desinstalação do módulo
      • Atualização do módulo
    • A ação foi executada em um modo conectado (não wsadmin -conntype none).
    • Os servidores necessários estavam em execução no tempo da ação.
      • Para uma topologia de implementação de rede, o gerenciador de implementação, o agente do nó e o servidor gerenciado que contém as timers EJB criados automaticamente estavam todos em execução.
      • Em uma topologia de base, o servidor independente estava em execução.
    • A ação de acompanhamento correta foi executada.
      • Para uma topologia de implementação de rede, salve suas mudanças e sincronize-as para o agente do nó. Se as mudanças foram salvas, mas não sincronizadas, os timers EJB criados automaticamente não serão removidos. Os timers EJB criados automaticamente são removidos apenas durante o processo de sincronização.
      • Para uma topologia de base, salve suas mudanças.
    • O banco de dados que suporta a instância do planejador estava em execução.
  • O WebSphere Application Server não remove automaticamente timers EJB criados automaticamente quando qualquer uma das seguintes condições ocorrer:
    • Qualquer ação é executada diferente de uma atualização ou desinstalação de um aplicativo ou módulo.
    • A ação (mesmo se for uma desinstalação/atualização de aplicativo/módulo) foi executada no modo desconectado.
    • Os servidores necessários não estavam em execução.
      • Para uma topologia de implementação de rede, o gerenciador de implementação, o agente do nó ou o servidor gerenciado não estava em execução.
      • Em uma topologia de base, o servidor independente não estava em execução.
    • A ação de acompanhamento correta não foi executada.
      • Para uma topologia de implementação de rede, os salvamento ou a sincronização não foi executada.
      • Para uma topologia de base, a operação salvar não foi executada.
    • O banco de dados que suporta a instância do planejador não estava em execução.
Se o WebSphere Application Server encontrar um erro quando tentar remover timers EJB criados automaticamente de um servidor, um aviso será gravado no arquivo de log.

Se um erro ocorrer, ou se o servidor de aplicativos não tentou remover timers EJB criados automaticamente ou se você não tiver certeza se os timers EJB criados automaticamente foram removidos, emita manualmente o comando removeAutomaticEJBTimers para assegurar-se de que os timers EJB criados automaticamente tenham sido removidos. Se os timers criados automaticamente foram realmente removidos da instância do planejador, executar o comando será desnecessário, mas não prejudicial.

Se estiver executando em um ambiente em cluster e seu cluster contiver diversos nós, e cada um desses nós contiver um servidor que é mapeado para a mesma instância do planejador no nível de cluster, os timers criados automaticamente deverão ser removidos apenas de um dos servidores. Isso ocorre porque a instância do planejador compartilhado é atualizada e todos os servidores que usam essa instância do planejador compartilhado visualizam a mudança.

Como resultado, se um servidor em um nó não estiver em execução e você receber um log avisando que os timers automáticos não puderam ser removidos dele, mas você sabe que o servidor compartilha uma instância do planejador no nível do cluster com um servidor em um nó diferente do que foi eliminado com sucesso, então nenhuma ação do usuários será necessária porque a instância do planejador compartilhado já foi atualizada.

O mesmo se aplica quando houver vários servidores em um cluster, quando eles fazem parte do mesmo nó, compartilham uma instância do planejador única no nível do cluster e quando um ou mais desses membros do cluster não estiverem em execução. Nesse caso, o servidor de aplicativos emite um log avisando que timers automáticos não puderam ser removidos desses servidores. Entretanto, se você souber que eles compartilham uma instância do planejador comum, e que um dos membros de cluster foi eliminado com sucesso, nenhuma ação do usuário será necessária porque a instância do planejador compartilhado já foi atualizada.

Se você estiver executando em uma topologia de implementação de rede e tiver vários servidores, o tipo do planejador usado (padrão versus configurado customizado) causará um impacto no desempenho em relação à limpeza do planejador. O planejador EJBContainer padrão é exclusivo por servidor. Se você estiver usando a instância do planejador EJBContainer padrão e você tiver cinco servidores, significa que você tem cinco instâncias do planejador únicas e que os timers automáticos devem ser removidos de todos os cinco deles quando o aplicativo for atualizado ou removido. Entretanto, se você tiver usando uma instância do planejador única configurada, customizada e compartilhada, os timers automáticos deverão ser removidos dessa instância do planejador.

Exemplo 1

Topologia:

  • Gerenciador de implementação em execução na estação de trabalho A.
  • NodeAgent em execução na estação de trabalho B. O nó chama-se Node01.
  • Servidor gerenciado server1 em execução na estação de trabalho C.
  • Servidor gerenciado server2 em execução na estação de trabalho D.
  • A segurança está ativada.
  • server2 está atualmente configurado para usar a mesma instância do planejador que contém os timers.

Plano de fundo:

O aplicativo testApp foi desinstalado em um modo conectado do console administrativo. Você deseja remover todos os timers criados automaticamente no aplicativo, independente em qual módulo eles foram solicitados.

O gerenciador de implementação, agente do nó e os servidores server1 estavam em execução e os timers EJB automáticos foram removidos do server1. Entretanto, o server2 não estava em execução e, assim, os timers EJB automáticos não foram removidos do server2.

Agora, você deve remover manualmente os timers EJB automáticos do server2.

Ação:
  • Usando o Jacl, a partir de uma sessão wsadmin conectada no gerenciador de implementação, insira a seguinte linha de código:
    $AdminTask removeAutomaticEJBTimers "-appName testApp -serverName server2 -nodeName Node01"
  • Usando o Jython, a partir de uma sessão wsadmin conectada no gerenciador de implementação, insira a seguinte linha de código:
    AdminTask.removeAutomaticEJBTimers('-appName testApp -serverName server2 -nodeName Node01')

Exemplo 2

Topologia:

  • server1 independente em execução na estação de trabalho A. O nó é chamado Node01.
  • A segurança administrativa está desativada.
  • server1 foi configurado para usar a instância do planejador jndi/sched_1 quando os timers EJB automáticos foram criados. Entretanto, server1 está atualmente configurado para usar outra instância do planejador jndi/sched_2.

Plano de fundo:

O módulo, mod1, a partir do aplicativo testApp, foi desinstalado, mas como o server1 foi configurado para usar a instância do jndi/sched_2 no momento da desinstalação, os timers EJB automáticos não foram removidos da instância do planejador jndi/sched_1.

Agora, você deve remover manualmente os timers EJB automáticos da instância do planejador jndi/sched_1 no server1.

O aplicativo contém módulos mod1 e mod2. Ambos desses módulos solicitados criaram automaticamente os timers EJB. O módulo mod2 ainda está instalado e ainda é necessário os timers EJB criados automaticamente que ele solicitou. Você deseja remover apenas os timers EJB criados automaticamente solicitados pelo mod1.

Ação:
  • Usando o Jacl, a partir de uma sessão wsadmin conectada no servidor independente, insira a seguinte linha de código:
    $AdminTask removeAutomaticEJBTimers "-appName testApp -moduleName mod1 -serverName server1 -nodeName Node01 -schedulerJNDIName jndi/sched_1"
  • Usando o Jython, a partir de uma sessão wsadmin conectada no servidor independente, insira a seguinte linha de código:
    AdminTask.removeAutomaticEJBTimers('-appName testApp -moduleName mod1 -serverName server1 -nodeName Node01 -schedulerJNDIName jndi/sched_1')

Ícone que indica o tipo de tópico Tópico de Referência



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rxml_configuringEJBTimerWorkManager
Nome do arquivo: rxml_configuringEJBTimerWorkManager.html