<< 18-July-2008 : hausbot on #mobicents at codehaus [download] [back] >>
 
 
time nick message

00:14

<alexandre>

"logger.isDebugEnabled()"= false

00:14

<alexandre>

@ SleeContainer.java

00:18

<alexandre>

log4j that is...

00:20

<martins>

agora ve la o printInvocationSequence no SbbObject

00:20

<alexandre>

true :(

00:21

<martins>

eu acho q tem a ver com o class loader na invoca??o ser mudado para o do sbb, que penso q seja o do tmp/deploy/...

00:23

<alexandre>

01:20:02,018 INFO [STDOUT] [SleeContainer] Activated ServiceID[DiameterTestsService#org.mobicents#1.0]

00:23

<alexandre>

01:20:02,080 INFO [DiameterTestsSbb] sbbRolledBack invoked.

00:24

<alexandre>

what's different here... no [STDOUT] no do SBB... meaning q n ta a "cair" no log4j do mobicentimos

00:24

<alexandre>

bzzzt

00:44

<alexandre>

q raio de path: \servers\jain-slee\core\sar\log4-rs\src\src\main

02:18

<alexandre>

2008-07-18 02:37:34,668 DEBUG [org.jboss.logging.Log4jRepositorySelector] Unknown classloader : c3ad9b, type : class org.jboss.mx.loading.UnifiedClassLoader3

03:13

<martins>

barreiro: ate amanha, tens trabalho no http://code.google.com/p/mobicents/issues/detail?id=203

03:16

<barreiro>

martins, tas a pedir ao Amit e ao Vlad, mas eu ek tenho mexido naqueles scripts ultimamente.

10:42

<alexandre>

martins: o logger em ConcreteSbbGenerator eh child do ROOT, o do SbbDeployer ? child do mpbicents ... ja n faz mt sentido ser a cena do tmp, estas 2 classes devem estar no mesma situacao

10:42

<alexandre>

ate pq os RAs tb vao parar a tmp e n lhes acontece isso :s

16:17

<alexandre>

martins: leste o q deixei ai de manh??

16:18

<alexandre>

org.mobicents.slee.container.deployment.SbbDeployer logger parent => mobicents

16:18

<alexandre>

org.mobicents.slee.container.deployment.ConcreteSbbGenerator logger parent => root

16:18

<alexandre>

[30224,RepositoryClassLoader,main] loadClass org.jboss.mx.loading.UnifiedClassLoader3@7b6617{ url=file:/C:/Work/JBoss/server/default/deploy/mobicents.sar/ ,addedOrder=16} name=org.mobicents.slee.container.deployment.SbbDeployer, loadClassDepth=0

16:18

<alexandre>

[38062,RepositoryClassLoader,main] loadClass org.jboss.mx.loading.UnifiedClassLoader3@7b6617{ url=file:/C:/Work/JBoss/server/default/deploy/mobicents.sar/ ,addedOrder=16} name=org.mobicents.slee.container.deployment.ConcreteSbbGenerator, loadClassDepth=0

16:19

<alexandre>

mesmo package, mesmo sar, mesmo classloader ... no comprendo.

16:25

<martins>

n sei se ? o mesmo

16:25

<martins>

pq quando o codigo do sbb generator ? chamado ? usado o class loader do sbb

16:26

<martins>

ve o metodo no SleeContainer

16:26

<martins>

private synchronized void installSbb(

16:26

<martins>

final MobicentsSbbDescriptor mobicentsSbbDescriptor)

16:26

<martins>

throws Exception {

16:26

<martins>

da? vai para sbbDeployer.deploySbb(mobicentsSbbDescriptor, this);

16:27

<martins>

e ? a? q o generator ? chamado

16:27

<alexandre>

exacto, foi dai q eu vi q os loggers eram diferentes

16:28

<alexandre>

loadClass org.jboss.mx.loading.UnifiedClassLoader3@7b6617 == loadClass org.jboss.mx.loading.UnifiedClassLoader3@7b6617

16:28

<alexandre>

e mm asim em debug a fiz this.getClass().getClassLoader() nos dois e deu o mm

16:29

<martins>

a classe pode ter o mesmo class loader mas quando ? executado o class loader ? o do sbb

16:30

<martins>

tal como na entrega do evento

16:30

<alexandre>

ah, estar a ser executado no contexto do sbb e o classloader ser diferente

16:30

<alexandre>

hum

16:30

<martins>

n me parece coincidencia q sempre q mudas o classloader para o do sbb o logger ja n esteja afectado pela config do log4j do mobicents

16:31

<alexandre>

epa, mas isso de qq forma deveria afectar os dois. a cena eh q n vejo a razao de ser de uma maneir p 1 e de outra p outro

16:35

<alexandre>

estou a pensar bem.. ou n? :P

16:35

<martins>

quais 2

16:35

<alexandre>

sbbDeployer VS ConcreteSbbGenerator

16:36

<alexandre>

uma vez q o ConcreteSbbGenerator eh chamado pelo SbbDeployer ... as condicoes sao as mesmas para ambos

16:37

<martins>

public boolean deploySbb(MobicentsSbbDescriptor sbbDeploymentDescriptor,

16:37

<martins>

SleeContainer serviceContainer) throws DeploymentException {

16:37

<martins>

String sbbAbstractClassName = ((MobicentsSbbDescriptor) sbbDeploymentDescriptor)

16:37

<martins>

.getSbbAbstractClassName();

16:37

<martins>

sbbVerifier = new SbbVerifier(sbbDeploymentDescriptor);

16:37

<martins>

//Verify abstract class

16:37

<martins>

boolean classVerifiedSuccessfully = sbbVerifier

16:37

<martins>

.verifySbbAbstractClass(sbbAbstractClassName,

16:37

<martins>

serviceContainer);

16:37

<martins>

MobicentsSbbDescriptor descriptorImpl = (MobicentsSbbDescriptor) sbbDeploymentDescriptor;

16:37

<martins>

16:37

<martins>

if (logger.isDebugEnabled()) {

16:37

<martins>

logger.debug("usageParametersInterface = "

16:37

<martins>

+ descriptorImpl.getUsageParametersInterface());

16:37

<martins>

}

16:37

<martins>

aqui ? false?

16:37

<martins>

ou ? false num sitio qq do SbbDeployer

16:38

<alexandre>

em qq sitio. na linha onde chama o ConcreteSbbGenerator ? false.

16:40

<martins>

o objecto do SbbDeployer ? criado antes da mudan?a do class loader

16:40

<martins>

n sei se ? disso

16:40

<martins>

/ create deployer

16:40

<martins>

SbbDeployer sbbDeployer = new SbbDeployer(getDeployPath());

16:40

<martins>

// change classloader

16:40

<martins>

ClassLoader oldClassLoader = Thread.currentThread()

16:40

<martins>

.getContextClassLoader();

16:41

<martins>

try {

16:41

<martins>

Thread.currentThread().setContextClassLoader(

16:41

<martins>

mobicentsSbbDescriptor.getClassLoader());

16:41

<martins>

// Set up the comp/env naming context for the Sbb.

16:41

<martins>

mobicentsSbbDescriptor.setupSbbEnvironment();

16:41

<martins>

// deploy the sbb

16:41

<martins>

sbbDeployer.deploySbb(mobicentsSbbDescriptor, this);

16:42

<alexandre>

huum

16:43

<martins>

doiss

16:43

<martins>

experimenta a trocar a ordem

16:43

<alexandre>

eh o q estou doing :)

16:43

<alexandre>

as vezes das ares de quem percebe disto, p?.. ;-)

16:44

<martins>

acredita q n fa?o ideia se ? essa a raz?o

16:44

<alexandre>

pois

16:44

<alexandre>

finally {

16:44

<alexandre>

Thread.currentThread().setContextClassLoader(oldClassLoader);

16:44

<alexandre>

}

16:44

<alexandre>

volta ao velho ... :p

16:44

<alexandre>

depois.. por isso trocar a ordem eh um bocado irrelevante, nao?

16:45

<martins>

mas entretanto ja chamou o sbb deployer q por sua vez criou o objecto do generator usando o classloader do sbb

16:45

<martins>

? a unica diferen?a q vejo

16:45

<alexandre>

exacto, mas tas a dizer p trocar a ordem como, meter o SbbDeployer a ser carregado no novo?

16:46

<martins>

s

16:46

<martins>

e ver se o isDebugEnabled ja da true no deployer

16:46

<alexandre>

ok. o melhor q devemos obter dai ? o SbbDeployer dar debug a true tb... :D mas ja eh qq coisa ;)

16:50

<martins>

agora pra instalar o media servers usa-se o pom.xml em servers/media/release

16:50

<martins>

da pra entender?

16:50

<barreiro>

n. mas tenta convencer o indiano se fores capaz.

16:52

<martins>

vejam la a janelinha privada lol

17:05

<alexandre>

qd ha problemas num projecto grande, parte-se em pequenos e fica-se c um problema num projecto pequeno... parece-me bem :D

17:07

<martins>

mas q problemas podem ter, s? se repetem os pacotes e as classes

17:08

<martins>

n custa muito resolver

17:09

<martins>

naquela banda a forma de resolver problemas ? assobiar e mudar tudo

17:09

<martins>

ou entao dizer q n vale o esfor?o hehe

17:10

<alexandre>

pois..

17:10

<alexandre>

a troca d ordem das coisas n funcionou

17:10

<alexandre>

continua a dar false no SbbDeployer

17:10

<alexandre>

e true no Generator

17:11

<martins>

:-\

17:12

<alexandre>

vou testar outra coisa

17:16

<alexandre>

btw, HANNOVER 96 X FC PORTO @ RTP1

17:21

<alexandre>

tb n deu... sem fazer a mudan?a de classloader.

18:01

<alexandre>

martins, barreiro: estao aqui? :P

18:01

<barreiro>

não, saí :P

18:01

<alexandre>

ainda bem

18:01

<alexandre>

queria falar sem tu ouvires :D

18:02

<alexandre>

a invocacao de um metodo estatico instancia uma classe ?

18:02

<barreiro>

sim

18:02

<martins>

n

18:02

<alexandre>

coooool

18:02

<alexandre>

era mm isso q precisava.. um sim e um nao. obrigado! :D

18:02

<martins>

os metodos estaticos sao instanciados quando a classe ? usada a primeira vez

18:03

<alexandre>

Drone: desempata :P

18:03

<alexandre>

sim, mas a invocacao deles...

18:03

<martins>

claro q isto se aplica a chamares metodos estaticos ou n

18:03

<barreiro>

a invokacao deles carrega a class no classloader, e são executados lá ...

18:03

<alexandre>

ta a ser invocado um metodo estatico do SbbDeployer num CL diferente de qd ele eh criado la no SleeContainer

18:04

<martins>

a resposta ? um nim

18:04

<martins>

:)

18:05

<martins>

se primeiro chamares um metodo estatico a classe ? carregada, se primerio chamares um n estatico a classe ? carregada e os membros static e static{} s?o chamados

18:05

<alexandre>

pois, eh o q tenho observado...

18:05

<martins>

a resposta ao q realmente queres saber ? q o logger ? criado na primeira invoca??o da classe

18:05

<martins>

seja estatica ou n

18:06

<alexandre>

exacto

18:07

<barreiro>

além disso, é criado um logger diferente por cada classloader.

18:07

<alexandre>

deixa la invocar uma coisa estatica na mm altura q eh feito pro SbbDeployer

18:08

<alexandre>

barreiro: como assim, mm se for estatico?

18:08

<alexandre>

o logger.

18:11

<barreiro>

o estatico é só válido dentro do classloader. A mesma classe carregada por dois classloaders gera duas instancias do objecto da classe, onde vivem as variáveis e os métodos estáticos.

18:11

<alexandre>

ahaah

18:12

<alexandre>

that did the trick .

18:12

<alexandre>

false e false.

18:12

<alexandre>

alexandre dances!

18:12

<alexandre>

:P

18:16

<alexandre>

mas no SbbObject, obviamente, continua a true

18:16

<alexandre>

ok, confirma-se entao de q eh do classloader onde eh carregado

18:20

<alexandre>

brb

Drone v1.4 © 2002-2005 Uwyn RIFE powered