users@glassfish.java.net

[gf-users] Glassfish TimerService: Exception in TimerHandle Deserialization when updating vom GF 3.1 to 4.1

From: Theodor Richard <theodor.richard_at_gmail.com>
Date: Fri, 5 Jun 2015 11:57:55 +0200

I'm updating a Java EE 6 application from GF 3.1.2.2 to 4.1. The
application heavily uses the EJB timer services and persists
TimerHandle objects
in the DB.

I get the following exception when accessing those timer handles in the DB:

Exception [EclipseLink-66] (Eclipse Persistence Services -
2.5.2.v20140319-9ad6abd):
org.eclipse.persistence.exceptions.DescriptorExceptionException
Description: Could not deserialize object from byte array.Internal
Exception: java.io.InvalidClassException:
com.sun.ejb.containers.TimerWrapper$TimerHandleImpl; local class
incompatible: stream classdesc serialVersionUID = 8013326429831986199,
local class serialVersionUID = -7638766191514989908Mapping:
org.eclipse.persistence.mappings.DirectToFieldMapping[timerHandle-->MESSAGE.TIMERHANDLE]Descriptor:
RelationalDescriptor(com.example.Message --> [DatabaseTable(MESSAGE)])

Apparently, serial version IDs have changed from GF 3.1 to 4.1. Any ideas
how to reuse those TimerHandle objects in GF 4.1.


I've also posted this on SO: http://stackoverflow.com/questions/30660996