[
https://issues.apache.org/jira/browse/DIRMINA-991?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Emmanuel Lecharny resolved DIRMINA-991.
---------------------------------------
Resolution: Fixed
Patch applied with Commit: c1792331521ec1f50e9c71228a20ca4ab21029fa
> Possible faster deserialization in AbstractIoBuffer object deserialization.
> ---------------------------------------------------------------------------
>
> Key: DIRMINA-991
> URL: https://issues.apache.org/jira/browse/DIRMINA-991
> Project: MINA
> Issue Type: Improvement
> Components: Core
> Affects Versions: 2.0.8
> Reporter: Jörg Michelberger
> Labels: patch, performance
>
> In ObjectInputStream.resolveClass() of AbstractIoBuffer.getObject() there is
> a possibility to avoid duplicate call to Class.forName(). First call is done
> in readClassDescriptor() and second in resolveClass() in case we deal with
> Serializables, class descriptors are cached by the java platform, and a call
> of desc.forClass() in resolveClass() returns a previous resolved class, which
> allows skipping the ClassLoader call. I append the original source and a
> possible fix for this issue. Is it possible to get this in the upcomming
> 2.0.9 release of MINA?
> Original source :
> {code}
> protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException,
> ClassNotFoundException {
> String name = desc.getName();
> try {
> return Class.forName(name, false, classLoader);
> } catch (ClassNotFoundException ex) {
> return super.resolveClass(desc);
> }
> {code}
> Possible fix :
> {code}
> protected Class<?> resolveClass(ObjectStreamClass desc) throws IOException,
> ClassNotFoundException {
> if (null == desc.forClass()) { //this works for
> serializable desc classes.
> String name = desc.getName();
> try {
> return Class.forName(name, false, classLoader);
> } catch (ClassNotFoundException ex) {
> return super.resolveClass(desc);
> }
> } else {
> return desc.forClass();
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)