Thursday Mar 28, 2013

[pt_BR] Redeploy de aplicações em produção no WebLogic

O WebLogic oferece uma função que permite você atualizar aplicações em ambiente de produção, com zero-downtime. Funciona assim: usuários que estão conectados na sua aplicação, continuarão conectados na versão antiga, mas quem se conectar depois do deploy da nova versão, será direcionado para o novo deploy. Assim, nenhum usuário sofrerá com um erro 404 (conteúdo inexistente), ou será prejudicado no meio de um processo (por exemplo, consultas ou relatórios). Isso permite roll-out de novas versões em horário comercial, sem necessidade de uma janela de atualização, para por exemplo, corrigir falhas no sistema que afetam somente uma parte da aplicação.

Agora para que isso seja possível, é necessário configurar o que chamamos de Application Version Identifier. Esta informação pode ser passada de duas formas:

  1. Por linha de comando:
    java weblogic.Deployer -adminurl http://localhost:7001 -user weblogic
         -password weblogic -deploy -name myTestDeployment 
         -source /myDeployments/myApplication/91Beta
         -targets myCluster -stage -appversion .91Beta
  2. Configurado no MANIFEST.MF do pacote (EAR/WAR) da aplicação
    Manifest-Version: 1.0
         Created-By: 1.4.1_05-b01 (Sun Microsystems Inc.)
         Weblogic-Application-Version: v920.beta

Apache Maven
Se você utiliza Maven para criar o pacote da aplicação, basta configurar no plugin (war ou ear), o parâmetro do Manifest:

<plugin>
  <artifactId>maven-ear-plugin</artifactId>
  <configuration>
    <archive>
      <manifestEntries>
        <WebLogic-Application-Version>${project.version}</WebLogic-Application-Version>
      </manifestEntries>
    </archive>
  ... 
</plugin>

Deu erro na versão nova? Rollback!
Se aconteceu alguma coisa com a versão nova, é só reativar a versão antiga para que novos usuários sejam direcionados a ela. Em seguida remova a versão nova. 

Removendo a versão antiga
Depois de ter a versão nova no ar, o WebLogic vai monitorar as sessões ainda abertas na versão antiga. Quando todas as sessões finalizarem (via timeout), a aplicação irá para o status retired. Caso isso demore para acontecer devido a sessões longas (usuário que esqueceu o navegador aberto em uma tela com função auto-refresh), você pode forçar esta etapa pelo console administrativo.

Se precisar de maiores informações, consulte a documentação do WebLogic 12c.

About


Bruno has been having fun working with Java since 2000 and now helps Oracle on sharing the technology accross all Latin America. Also plays videogames, does trekking and loves beer.

Follow me on Twitter! @brunoborges

Search

Archives
« March 2013 »
SunMonTueWedThuFriSat
     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
27
29
30
31
      
Today