| Summary: | JMX:java.rmi.UnmarshalException when invoking "getObjectsInIdentityMap" and "getObjectsInIdentityMapSubCacheAsMap" | ||
|---|---|---|---|
| Product: | z_Archived | Reporter: | Yiping Zhao <yiping.zhao> |
| Component: | Eclipselink | Assignee: | Project Inbox <eclipselink.foundation-inbox> |
| Status: | NEW --- | QA Contact: | |
| Severity: | normal | ||
| Priority: | P2 | CC: | eclipselink.foundation-inbox, michael.f.obrien, sanjeevthasale |
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Windows XP | ||
| URL: | http://wiki.eclipse.org/EclipseLink/DesignDocs/316513 | ||
| Whiteboard: | JMX | ||
| Bug Depends on: | 316513 | ||
| Bug Blocks: | |||
|
Description
Yiping Zhao
Note: (1). the exceptions stated here for WebLogic, exceptions on GlassFish are exactly same as WebLogic's (2). For JBOSS, the first operation returns "[org.eclipse.persistence.testing.models.jpa.relationships.Customer@b63ed5]" which seems right; the second operation returns "org.eclipse.persistence.internal.helper.linkedlist.ExposedNodeLinkedList@1bdacbe" which seems wierd >This exception does not occur on a JRockit/JRMC combination - so far
>I need to retest my SSB application on SUN/JConsole to see if it is app related
However, I do get the CNFException if I do not do a [getNumberOfObjectsInIdentityMap()] first
In this case I get 55 null entries (which is still wrong)
>verify on SUN-JConsole/JRockit-JRMC and formal-test-EAR/tutorial-EAR as there are differences between the EAR architecture and possibly the JVM/JMX-viewer combination Scheduled for more in-depth investigation (debug session) and possible inclusion in the next release. Tracking of this issue will be in conjuction with the other 23 open issues on parent bug # 316513 >The 2nd error I get on WebLogic/JRMC - even though my Entity is serializable Caused by: java.io.NotSerializableException: org.eclipse.persistence.internal.helper.linkedlist.ExposedNodeLinkedList public class Cell implements Serializable { private static final long serialVersionUID = -8865917134914502125L; >It is not related to the model - it is the IdentityMap which used ExposedNodeLinkedList in the WeakIdentityMap public class HardCacheWeakIdentityMap extends WeakIdentityMap { /** A subset of cache entries have hard references maintained in this list to reduce garbage collection frequency */ protected ExposedNodeLinkedList referenceCache; >where the class is not serializable because the fields are transient public class ExposedNodeLinkedList implements List { private transient LinkedNode header; private transient int size; >Summary: Since the object needs to be transmitted to JRMC via RMI - it needs to be serializable However, serialization will introduce performance and security hits on general caching if we implement Serializable in ExposedNodeLinkedList >See line 363 - we are returning a List of ENLinkedList instances subCache = ((HardCacheWeakIdentityMap)map).getReferenceCache(); >Either returning the LinkedList for all identityMap operations never worked >Or ExposedNodLinkedList was modified so that serialization is no longer possible >Fix: 1) convert to another serializable ArrayList 2) convert to an array of strings (will change function definition) >An alternative would be to transmit a String representation of the List instead The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink |