[Prévia] [Próxima] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto]

Re: Duas dúvidas: uma sobre classloaders sacanas e outra meio off-topic



    Oi pessoal,

    Aproveitando para comentar um pouco sobre isso - esse problema é o 
do schema evolution - a solução pode ser incrivelmente complexa. O 
depurador até que se esforça - mantém uma lista de dependências e 
objetos ativos e, quando você troca uma classe, ele até reseta as call 
stacks dos métodos que estavam executando aquele código, presos em 
breakpoints, para que o usuário possa visualizar as mudanças - é um 
lance só prá você poder ir brincando com o código e vendo o que acontece.
    Agora, se o programa tem instâncias ativas de objetos com a versão 
antiga da classe e você detona alguma coisa muito feia (tipo um 
atributo), e o código daquela classe já foi executado ou estiver 
executando, a VM "sai de sincronia" - i.e. ele não atualiza a classe, ou 
atualiza e arrebenta tudo (porque, ao contrário do que acontece no 
JBoss, a JVMDI de fato arranca a classe antiga e substitui com uma nova 
- rola uma substituição de bytecode *naquele* binding de tipo).
    Então, o "hot-swap" do debugger com certeza não serve ao mesmo 
propósito do hot-swap do JBoss - o primeiro serve para você poder 
brincar com o código em modo debug, podendo inclusive arrebentar tudo e 
derrubar a sua aplicação. O segundo serve ao propósito da flexibilidade, 
da conveniência e da adaptação e, idealmente, não deve derrubar a sua 
aplicação. :-)
    Concluindo, o hot-swap da JPDA é  bem conveniente para quem está 
depurando, mas, certamente, não se trata de uma tentativa de resolver o 
problema de schema evolution - ele não funciona e nem poderia funcionar 
perfeitamente.

    Abraços a todos e até amanhã,

       Giuliano

   

>Isso e muito legal. Tambem fiquei curioso quando usei. Mas este "hot replace"
>nao funciona perfeitamente, depende das alteracoes feitas no codigo (se voce
>alterar algo consideravel ja para de funcionar). Tive tambem algumas vezes paus
>na JVM (ela caia, imprimindo umas mensagens meio loucas) devido a este "hot
>replace".
>
>Abracos.
>
>  
>