ClassNotFoundException while loading persisted sessions

Deserialization of a class implementing com.vaadin.data.Property fails on Glassfish 4 (and 3) with ClassNotFoundException. I have my own DbProperty class, but I replaced it with ColumnProperty and that fails too. Any idea?

[admin-listener(4)]
 WARN  javax.enterprise.web - Unable to restore sessions for web module 
[/Whatever] from previous deployment
java.lang.ClassNotFoundException: com.vaadin.data.util.sqlcontainer.ColumnProperty
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) ~[na:1.7.0_51]

    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) ~[na:1.7.0_51]

    at java.security.AccessController.doPrivileged(Native Method) [na:1.7.0_51]

    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) ~[na:1.7.0_51]

    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) ~[na:1.7.0_51]

    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[na:1.7.0_51]

    at org.apache.felix.framework.BundleWiringImpl.doImplicitBootDelegation(BundleWiringImpl.java:1738) ~[felix.jar:na]

    at org.apache.felix.framework.BundleWiringImpl.searchDynamicImports(BundleWiringImpl.java:1675) ~[felix.jar:na]

    at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1511) ~[felix.jar:na]

    at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75) ~[felix.jar:na]

    at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955) ~[felix.jar:na]

    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ~[na:1.7.0_51]

    at java.lang.Class.forName0(Native Method) ~[na:1.7.0_51]

    at java.lang.Class.forName(Class.java:270) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:625) ~[na:1.7.0_51]

    at com.sun.enterprise.container.common.impl.util.GlassFishObjectInputStream.resolveClass(GlassFishObjectInputStream.java:151) ~[container-common.jar:na]

    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1612) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1663) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1344) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) ~[na:1.7.0_51]

    at java.util.HashMap.readObject(HashMap.java:1184) ~[na:1.7.0_51]

    at sun.reflect.GeneratedMethodAccessor699.invoke(Unknown Source) ~[na:na]

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_51]

    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_51]

    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) ~[na:1.7.0_51]

    at java.util.HashMap.readObject(HashMap.java:1183) ~[na:1.7.0_51]

    at sun.reflect.GeneratedMethodAccessor699.invoke(Unknown Source) ~[na:na]

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_51]

    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_51]

    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) ~[na:1.7.0_51]

    at java.util.LinkedList.readObject(LinkedList.java:1136) ~[na:1.7.0_51]

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_51]

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_51]

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_51]

    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_51]

    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) ~[na:1.7.0_51]

    at java.util.HashMap.readObject(HashMap.java:1183) ~[na:1.7.0_51]

    at sun.reflect.GeneratedMethodAccessor699.invoke(Unknown Source) ~[na:na]

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_51]

    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_51]

    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) ~[na:1.7.0_51]

    at java.util.HashMap.readObject(HashMap.java:1184) ~[na:1.7.0_51]

    at sun.reflect.GeneratedMethodAccessor699.invoke(Unknown Source) ~[na:na]

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_51]

    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_51]

    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500) ~[na:1.7.0_51]

    at com.vaadin.server.VaadinSession.readObject(VaadinSession.java:1340) ~[vaadin-server-7.1.11.jar:7.1.11]

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_51]

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_51]

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_51]

    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_51]

    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) ~[na:1.7.0_51]

    at org.apache.catalina.session.StandardSession.readRemainingObject(StandardSession.java:2078) ~[web-core.jar:na]

    at org.apache.catalina.session.StandardSession.readObject(StandardSession.java:1986) ~[web-core.jar:na]

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_51]

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_51]

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_51]

    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_51]

    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) ~[na:1.7.0_51]

    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370) ~[na:1.7.0_51]

    at org.apache.catalina.session.StandardSession.deserialize(StandardSession.java:1272) ~[web-core.jar:na]

    at org.apache.catalina.session.StandardManager.readSessions(StandardManager.java:555) ~[web-core.jar:na]

    at com.sun.enterprise.web.WebModule.loadSessions(WebModule.java:1762) ~[web-glue.jar:na]

    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2280) [web-glue.jar:na]

    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1924) [web-glue.jar:na]

    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139) [web-glue.jar:na]

    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) [internal-api.jar:na]

    at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291) [internal-api.jar:na]

    at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352) [internal-api.jar:na]

    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:497) [kernel.jar:na]

    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) [kernel.jar:na]

    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) [deployment-admin.jar:na]

    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527) [kernel.jar:na]

    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523) [kernel.jar:na]

    at java.security.AccessController.doPrivileged(Native Method) [na:1.7.0_51]

    at javax.security.auth.Subject.doAs(Subject.java:356) [na:1.7.0_51]

    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522) [kernel.jar:na]

    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546) [kernel.jar:na]

    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423) [kernel.jar:na]

    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108) [kernel.jar:na]

    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762) [kernel.jar:na]

    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674) [kernel.jar:na]

    at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:235) [rest-service.jar:na]

    at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:257) [rest-service.jar:na]

    at org.glassfish.admin.rest.resources.TemplateListOfResource.createResource(TemplateListOfResource.java:134) [rest-service.jar:na]

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.7.0_51]

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) ~[na:1.7.0_51]

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.7.0_51]

    at java.lang.reflect.Method.invoke(Method.java:606) ~[na:1.7.0_51]

    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) [jersey-server.jar:na]

    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:125) [jersey-server.jar:na]

    at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:152) [jersey-server.jar:na]

    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:91) [jersey-server.jar:na]

    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:346) [jersey-server.jar:na]

    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:341) [jersey-server.jar:na]

    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:101) [jersey-server.jar:na]

    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:224) [jersey-server.jar:na]

    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271) [jersey-common.jar:na]

    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267) [jersey-common.jar:na]

    at org.glassfish.jersey.internal.Errors.process(Errors.java:315) [jersey-common.jar:na]

    at org.glassfish.jersey.internal.Errors.process(Errors.java:297) [jersey-common.jar:na]

    at org.glassfish.jersey.internal.Errors.process(Errors.java:267) [jersey-common.jar:na]

    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317) [jersey-common.jar:na]

    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:198) [jersey-server.jar:na]

    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:946) [jersey-server.jar:na]

    at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:331) [jersey-container-grizzly2-http.jar:na]

    at org.glassfish.admin.rest.adapter.RestAdapter$2.service(RestAdapter.java:318) [rest-service.jar:na]

    at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:181) [rest-service.jar:na]

    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246) [kernel.jar:na]

    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) [nucleus-grizzly-all.jar:na]

    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) [nucleus-grizzly-all.jar:na]

    at java.lang.Thread.run(Thread.java:744) [na:1.7.0_51]

It turns out that it’s actually array of Properties that can’t be deserialized. So ArrayList doesn’t work either. I had to use LinkedList. Is that a Glassfish/Felix bug?

I was wrong: ArrayList works, but Array of Properties does not.