[DIFÍCIL] Como eu troco uma classe por outra no runtime

14 respostas
saoj

Quero fazer basicamente o que alguns servlet containers fazem:

Minha classe mudou, então eu carrego ela de novo e faço um hotswap.

Acho que a única maneira é ficar abandonando classloaders…

Se alguém souber de algum link ou exemplo de classloader que faz isso e puder me ajudar… :roll: :roll:

14 Respostas

saoj

Bom,

Já que eu descobri que o Tomcat faz isso pra mim com o reloadable=true, acho que posso deixar esse trabalho complicado para o tomcat. :roll: (Depois vou tentar pegar os códigos do tomcat para entender como ele faz isso…)

Então mudo a pergunta para outra que eu tb não tenho idéia:

:arrow: Como eu compilo um programa Java usando um programa Java ??? Isto é, quero ler um arquivo .java, compilá-lo e salvá-lo como .class, da mesma maneira que o Tomcat faz com os JSPs…

sergiolopes

saoj:
:arrow: Como eu compilo um programa Java usando um programa Java ??? Isto é, quero ler um arquivo .java, compilá-lo e salvá-lo como .class, da mesma maneira que o Tomcat faz com os JSPs…

o janino eh uma possibilidade
www.janino.net

louds

O Janino não suporta toda linguagêm java, recomendo você olhar a API do javac ou do compilador do Eclipse. O javac é super lento e tem memory leaks, mas basta ter o tools.jar no CP, já o Eclipse tem uma API um pouco mais elaborada (você pode pegar ele já separado da IDE no tomcat 5.5).

saoj

Valeu pessoal !!! Eu usei o Process.exec, que é uma das coisas mais misteriosas do Java.

Se alguém for usar esse carinha e não quiser perder uma semana, recomendo a leitura disso:

cv1

Process.exec? Misterioso? Hmm, eu tou com uma licao de casa com IIOP aqui, ta afim? :mrgreen:

saoj

Pô CV, não esculaxa !!! :lol:

Lê esse artigo aí que vc vai ver que tem 3 ou 4 pitfals. É o tipo de coisa que era pra ser simples mas não é…

Mauricio_Linhares

saoj:
Lê esse artigo aí que vc vai ver que tem 3 ou 4 pitfals. É o tipo de coisa que era pra ser simples mas não é…

Depende, quem sabe o cara que fez achou que era baba!

Alguém tem que fazer uma análise da usabilidade das bibliotecas do Java :lol:

cv1

Maurício Linhares:
saoj:
Lê esse artigo aí que vc vai ver que tem 3 ou 4 pitfals. É o tipo de coisa que era pra ser simples mas não é…

Depende, quem sabe o cara que fez achou que era baba!

Alguém tem que fazer uma análise da usabilidade das bibliotecas do Java :lol:


Comecando pela java.util.Calendar… :mrgreen:

_fs

Totalmente … aquilo é codigo gerado por um computador, não é possível.

Paulo_Silveira

saoj, fuja do Process.exec!!! Se o cara nao tiver javac no path voce dancou. se nao tiver jdk instalado voce dancou.

faca o que o louds disse: tools.jar ou compilador do eclipse. ou espere o ajva 6 que vira com compilador na api da j2se! :slight_smile:

Mauricio_Linhares

Paulo Silveira:
saoj, fuja do Process.exec!!! Se o cara nao tiver javac no path voce dancou. se nao tiver jdk instalado voce dancou.

faca o que o louds disse: tools.jar ou compilador do eclipse. ou espere o ajva 6 que vira com compilador na api da j2se! :slight_smile:

Ainda acho o compilador do Eclipse a melhor escolha :mrgreen:

saoj

Paulo Silveira:
saoj, fuja do Process.exec!!! Se o cara nao tiver javac no path voce dancou. se nao tiver jdk instalado voce dancou.

faca o que o louds disse: tools.jar ou compilador do eclipse. ou espere o ajva 6 que vira com compilador na api da j2se! :slight_smile:

Tem toda a razão !!! Mas o tools.jar pode tb não estar no classpath !!!

louds

O tools.jar pode não estar no classpath e você não pode distribuir ele. A vantagem é que basta ter o JDK instalado pra ele estar disponível. Eu até hoje não ví instalações de servidores com o JRE (apesar de servidores como tomcat permitirem).

mister_m

Existe uma razão bem simples pra isso: a grande maioria dos servidores web só compilam os JSPs se o JDK estiver instalado e o tools.jar estiver no classpath :smiley:

Criado 1 de agosto de 2005
Ultima resposta 2 de ago. de 2005
Respostas 14
Participantes 8