Zdravim,

Po dalsim zkoumani jsem problem lokalizoval jako chybu JBossu pri deserializaci 
primitivnich trid (Boolean.TYPE, Integer.TYPE aspol.), ktere predavam do 
volaneho session beanu.

Diky tomu, ze pro nasledne volani business objektu pouzivam Apache beanutils, 
jako workaround funguje transformace primitivnich trid na prislusne wrapper 
tridy (Boolean.TYPE -> Boolean.class apod.) pred volanim session beanu. S 
wrapper tridami ten Jbossi deserializator problem nema. Trochu hack, ale 
hlavne, ze to funguje.

Honza

-----Původní zpráva-----
Od: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] za uživatele Jan Moravec
Odesláno: Tuesday, May 15, 2007 12:11
Komu: 'Java'
Předmět: Jboss - No ClassLoaders found for: boolean / int


Zdravim,

Nesetkal se zde nahodou nekdo s problemem s volanim metod na remote (staleless) 
session beanu pres JBoss klient, kdy volani na klientu konci s:

java.lang.NullPointerException
        at 
org.jboss.ejb.plugins.LogInterceptor.handleException(LogInterceptor.java:421)
        at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:209)
        at 
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:136)
        at 
org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648)
      ...
        at 
org.jboss.invocation.pooled.server.ServerThread.run(ServerThread.java:156)
Caused by: java.lang.NullPointerException
        at 
org.jboss.ejb.plugins.CallValidationInterceptor.validateArguments(CallValidationInterceptor.java:73)
        at 
org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:62)
        at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350)
        at 
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
        at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168)
        at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
        ... 16 more

A na serveru s:

2007-05-15 11:49:17,109 ERROR (PooledInvokerThread-192.168.1.65-3) [STDERR] 
java.lang.ClassNotFoundException: No ClassLoaders found for: boolean

^^^ Tohle je asi nejzajimavejsi

2007-05-15 11:49:17,109 ERROR (PooledInvokerThread-192.168.1.65-3) [STDERR]     
at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:306)
...
2007-05-15 11:49:17,109 ERROR (PooledInvokerThread-192.168.1.65-3) [STDERR]     
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)

2007-05-15 11:49:17,109 ERROR (PooledInvokerThread-192.168.1.65-3) [STDERR]     
at 
org.jboss.invocation.pooled.interfaces.PooledMarshalledValue.get(PooledMarshalledValue.java:93)

2007-05-15 11:49:17,109 ERROR (PooledInvokerThread-192.168.1.65-3) [STDERR]     
at 
org.jboss.invocation.pooled.interfaces.PooledMarshalledInvocation.getArguments(PooledMarshalledInvocation.java:165)

2007-05-15 11:49:17,109 ERROR (PooledInvokerThread-192.168.1.65-3) [STDERR]     
at org.jboss.ejb.Container.invoke(Container.java:918)

Dle mych experimentu ma JBoss klient problem s volanim metod, ktere maji 
alespon jeden argument primitivniho typu(odzkouseno s boolean, int, ...). Pokud 
volana metoda vraci primitivni typ, problem uz neni. Pokud upravim hlavicky 
metod a misto primitivnich typu argumentu pouziji prislusne wrappery (Boolean,, 
Integer, ...), problem zmizi.

Navic se toto chovani vyskytuje jen pri volani pres JBoss klienta. Pokud volam 
metody treba z JSP na serveru, problem neni. Ale to muze byt i diky nastaveni 
"call-by-reference", kdy se predavane parametry nevaliduji/neserializuji apod.

Trochu jsem popis zjednodusil v tom, ze v mem pripade se volani metod na 
vzdalenych business objektech provadi pres jediny genericky fasadni bean majici 
jedinou metodou invokeBOMethod(Class boType, String method, Class[] argTypes, 
Object[] args), takze ty primitivni typy a hodnoty jsou na vzdaleny session 
bean predavany uvnitr poli. IMO by toto nemelo hrat zasadni roli.

Dekuji za pripadna nakopnuti,
Honza

PS: v Jboss JIRA/Google jsem o tomto problemu moc nenasel. Vetsina podobnych 
problemu je kolem neprimitivnich trid, coz je vetsinou problem s nastavenim 
classpath/rozdilnyma verzema trid na serveru/klientu apod.

Odpovedet emailem