| 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 |