[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



Ola a todos.

On Mon, Dec 20, 2004 at 08:00:54PM -0300, Danilo Conde wrote:
>       Primeira dúvida: eu lembro que, quando estávamos tendo aulas sobre
> ClassLoaders, eu perguntei ao professor o que poderia acontecer se eu
> tivesse um classloader que fizesse alguma modificação no bytecode das
> classe mas não delegasse o carregamento das classe para seus ancestrais. A
> pergunta em si pode ser reformulada como: fazendo um classloader que não
> delega para os seus ancestrais o carregamento das classes, conseguiria eu
> fazer alterações maliciosas em classes como String, ArrayList, etc. ? Pra
> ser sincero, não me lembro perfeitamente da resposta. Mas estava pensando e
> acho que o que consigo fazer é que as classes que forem carregadas pelo meu
> classloader, ao usarem as classes String, ArrayList etc. acabem usando
> outras classes na verdade (com mesmo nome completo, no entanto). Imagino
> que a consequência disso é que eu tomaria  ClassCastException quando
> tentasse chamar métodos que esperam um String de verdade. É isso mesmo ?
Bom, e so um palpite: sera que e possivel criar um classloader que nao delega
a seus ancestrais? Porque mesmo que o classloader pai seja null, ele delega
para o boot classloader. O que vi na documentação da Sun:

"Each instance of ClassLoader has an associated parent class loader...
The virtual machine's built-in class loader, called the "bootstrap class loader",
does not itself have a parent but may serve as the parent of a ClassLoader
instance."

Isso parece indicar que o unico classloader sem pai (e que portanto nao delega a
ninguem) e o boot CL.

Mas se isso for possivel acho que vai dar ClassCastException mesmo.

>       O outro assunto, o off-topic, diz respeito ao hot code replace do
> Eclipse/Jboss IDE. Caras, que troço bacana é isso. Estou curioso pra saber
> como o dito cujo funciona. Ainda não pesquisei nada a respeito, mas se
> alguém souber como ele funciona e estiver disposto a explicar ou indicar
> links, ficaria muito grato.
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.

-- 
 Ivan Bittencourt de Araujo e S Neto   <ivanneto@linux.ime.usp.br>