[jboss-jira] [JBoss JIRA] Updated: (JBAS-4106) Allow use of classes from scoped loaders in ClusterPartition RPC calls

Brian Stansberry (JIRA) jira-events at lists.jboss.org
Tue Mar 6 15:11:22 EST 2007


     [ http://jira.jboss.com/jira/browse/JBAS-4106?page=all ]

Brian Stansberry updated JBAS-4106:
-----------------------------------

    Fix Version/s:  JBossAS-5.0.0.Beta3
                       (was: JBossAS-5.0.0.Beta2)

Jerry, I'm moving this to Beta3 as Beta2 will go out shortly and I don't want to rush this into it.

> Allow use of classes from scoped loaders in ClusterPartition RPC calls
> ----------------------------------------------------------------------
>
>                 Key: JBAS-4106
>                 URL: http://jira.jboss.com/jira/browse/JBAS-4106
>             Project: JBoss Application Server
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>          Components: Clustering
>            Reporter: Brian Stansberry
>         Assigned To: Jerry Gauthier
>             Fix For:  JBossAS-5.0.0.Beta3
>
>
> ClusterPartition RPC calls will currently fail if any classes in the RPC or in the return value are not visible to ClusterPartition's classloader.  This is because message unmarshalling will fail to resolve the scoped class.
> To fix this:
> 1) Add overloaded method registerRPCHandler(String key, Object handler, Classloader classloader) to ClusterPartition.
> 2) Add field ConcurrentHashMap<String, WeakReference<Classloader>> to ClusterPartition.
> 3) Refactor the way the service name is passed in the marshalled RPC.  Now it is dot appended to the RPC's method name.  Instead marshall it separately; e.g. the marshalled data structure could be new Object[] { serviceName, new MarshalledValue(methodCall) } or something like that.
> 4) Unmarshalling deserializes the above, reads the serviceName, looks up the classloader in the map; if found sets the TCCL, and then calls MarshalledValue.get() to get the MethodCall.
> Alternative is not to create a separate map for the classloaders, but change the current map that stores the handlers to instead store a simple data type that wraps the handler and the classloader.  Have to use a WeakReference for the classloader though.
> The existing usage where no classloader is registered still has to work; i.e. if no classloader is found don't touch the TCCL.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list