You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@river.apache.org by "Peter Firmstone (JIRA)" <ji...@apache.org> on 2009/08/16 15:06:14 UTC

[jira] Issue Comment Edited: (RIVER-316) RFC Library, Application & Class Versioning, Dynamically Mobile Codebases and Classloading enhancements

    [ https://issues.apache.org/jira/browse/RIVER-316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12743840#action_12743840 ] 

Peter Firmstone edited comment on RIVER-316 at 8/16/09 6:05 AM:
----------------------------------------------------------------

Very rough, needs more eyes and further revision, note the MobileObjectDelegate proxy interface has been renamed to PersistentObjectDelegate.  Persistent Object's are objects that persist over package upgrades in memory, Serialization is used to upgrade the PersistentObject to the new class implementation.  Serialization is not expected to support unmarshalling to old class versions, instead obsolete interface methods can throw ObsoleteMethodException, that can be translated into a RemoteMethodException for remote classes, local classes are expected to check for later class file updates and trigger a Package upgrade request.

The package upgrades themselves might be managed by an upgrade service that allows the upgrade process to be scheduled for nodes in a djinn.

      was (Author: pfirmst):
    Very rough, needs more eyes and further revision.
  
> RFC Library, Application & Class Versioning, Dynamically Mobile Codebases and Classloading enhancements
> -------------------------------------------------------------------------------------------------------
>
>                 Key: RIVER-316
>                 URL: https://issues.apache.org/jira/browse/RIVER-316
>             Project: River
>          Issue Type: New Feature
>          Components: net_jini_loader
>         Environment: All
>            Reporter: Peter Firmstone
>         Attachments: classworlds-1.0-src.zip, Java Classloader issues relating to Jini smli_tr-2006-149.pdf, VersionedDynamicClassesRev6.tgz
>
>
> Request for Comments:
> Proposal to add support for Dynamic Mobile Codebases and Application fine grained class versioning as well as Coarse grained Library versioning , to enable River User devolopers, to provide distinction between classes with the same fully qualified class name when code differences created by refactoring packages or library updates break backward compatibility between classes contained within that library or package.  ClassWorlds can be used to segregate ClassRealms for application packages and different library versions.
> A dependency tree array object (contains dependency references between classes, fully qualified class names are stored as String objects) returned by the new ClassDepend tool (replacement of classdep functionality) may be suitable (with some modification) for recording class versioning, for later navigation of the codebase for class version verification, perhaps this could be stored in serialized form with the codebase.
> The ASM library might be used to modify existing, externally sourced library class file bytecodes to add a LIBRARYVERSIONID static final field, with an accessor method, for library code used in codebases, to mark the class files with the library release version.
> serialVersionUID (when it exists), along with the CLASSVERSION static field, might be used to determine the dependency and backward compatibility of classes in a codebase, this information could be stored in the dependency tree along with the CLASSVERSION, fully qualified class name and class file checksum.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.