Hi Oscar, It looks like a concurrency bug in Javassist in 3.20.0-GA. It's fixed in [1], but hasn't yet been released.
If it's a blocker, then I guess all you can do is to build a local version of Javassist, and the use Maven <dependencyManagement> section in your top-level pom.xml to reference your local version. HTH Dan [1] https://github.com/jboss-javassist/javassist/commit/fee5e033b303efce0cb6d9268b5361d5e1eb1974#diff-784aef550e16e266f5ecb6a3ce357fd1 On 23 August 2016 at 22:27, Óscar Bou - GOVERTIS <[email protected]> wrote: > Hi all. > > I’m also experiencing a problem when javassist tries to enhance some > classes from inside a thread (a Quartz job), when invoked through the > WrapperFactory. > > Seems that sometimes the “proxyFactory.createClass()” method invocation in > ProxyCreator does not return the enhanced class, returning “null” instead. > > It occurs occasionally (in every execution), but not repeated for the same > class or invocation. > > I’ve not found any difference when debugging between “correct” invocations > and those returning “null”. > > Any ideas? > > > > java.lang.NullPointerException at org.objenesis.ObjenesisBase. > getInstantiatorOf(ObjenesisBase.java:89) at org.objenesis.ObjenesisBase. > newInstance(ObjenesisBase.java:73) at org.objenesis.ObjenesisHelper. > newInstance(ObjenesisHelper.java:44) at org.apache.isis.core.wrapper. > internal.util.Util.createInstance(Util.java:43) at > org.apache.isis.core.wrapper.proxy.ProxyCreator. > instantiateProxy(ProxyCreator.java:67) at org.apache.isis.core.wrapper. > handlers.ProxyContextHandler.proxy(ProxyContextHandler.java:47) at > org.apache.isis.core.wrapper.WrapperFactoryDefault.createProxy( > WrapperFactoryDefault.java:253) at org.apache.isis.core.wrapper. > WrapperFactoryDefault.wrap(WrapperFactoryDefault.java:246) at > org.apache.isis.core.wrapper.WrapperFactoryDefault.wrap( > WrapperFactoryDefault.java:222) at > mydom.dom.backend.mydomService.wrap(mydomService.java:11) > at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific > ationRepository.createUnprocessedNotification( > SupplierAnyOfferChangedNotificationRepository.java:52) at sun.reflect. > GeneratedMethodAccessor160.invoke(Unknown Source) at sun.reflect. > DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:483) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract.invokeMethodElseFromCache( > ActionInvocationFacetForDomainEventAbstract.java:408) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract$2.execute( > ActionInvocationFacetForDomainEventAbstract.java:262) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract$2.execute( > ActionInvocationFacetForDomainEventAbstract.java:1) at > org.apache.isis.applib.services.iactn.Interaction. > executeInternal(Interaction.java:173) at org.apache.isis.applib. > services.iactn.Interaction.execute(Interaction.java:143) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract.doInvoke( > ActionInvocationFacetForDomainEventAbstract.java:311) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract$1.execute( > ActionInvocationFacetForDomainEventAbstract.java:165) at > org.apache.isis.core.runtime.system.transaction.IsisTransactionManager. > executeWithinTransaction(IsisTransactionManager.java:143) at > org.apache.isis.core.runtime.system.transaction.IsisTransactionManager. > executeWithinTransaction(IsisTransactionManager.java:133) at > org.apache.isis.core.runtime.services.persistsession. > PersistenceSessionServiceInternalDefault.executeWithinTransaction( > PersistenceSessionServiceInternalDefault.java:179) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract.invoke( > ActionInvocationFacetForDomainEventAbstract.java:161) at > org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault. > executeInternal(ObjectActionDefault.java:398) at org.apache.isis.core. > metamodel.specloader.specimpl.ObjectActionDefault.execute(ObjectActionDefault.java:387) > at org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler. > handleActionMethod(DomainObjectInvocationHandler.java:671) at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler. > invoke(DomainObjectInvocationHandler.java:284) at > org.apache.isis.core.wrapper.proxy.ProxyCreator$1.invoke(ProxyCreator.java:72) > at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific > ationRepository_$$_jvstfc5_1b.createUnprocessedNotification( > SupplierAnyOfferChangedNotificationRepository_$$_jvstfc5_1b.java) at > mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific > ationRepository.addUnprocessedNotification(SupplierAnyOfferChangedNotificationRepository.java:101) > at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific > ationRepository.lambda$0(SupplierAnyOfferChangedNotificationRepository.java:163) > at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific > ationRepository$$Lambda$40/685085353.apply(Unknown Source) at > java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) > at > java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374) > at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:512) > at > java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:502) > at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) > at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) > at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) > at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific > ationRepository.downloadToDatabaseAndDeleteFromQueue( > SupplierAnyOfferChangedNotificationRepository.java:186) at sun.reflect. > NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect. > NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at > sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) at > java.lang.reflect.Method.invoke(Method.java:483) > at org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract.invokeMethodElseFromCache( > ActionInvocationFacetForDomainEventAbstract.java:408) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract$2.execute( > ActionInvocationFacetForDomainEventAbstract.java:262) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract$2.execute( > ActionInvocationFacetForDomainEventAbstract.java:1) at > org.apache.isis.applib.services.iactn.Interaction. > executeInternal(Interaction.java:173) at org.apache.isis.applib. > services.iactn.Interaction.execute(Interaction.java:143) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract.doInvoke( > ActionInvocationFacetForDomainEventAbstract.java:311) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract$1.execute( > ActionInvocationFacetForDomainEventAbstract.java:165) at > org.apache.isis.core.runtime.system.transaction.IsisTransactionManager. > executeWithinTransaction(IsisTransactionManager.java:143) at > org.apache.isis.core.runtime.system.transaction.IsisTransactionManager. > executeWithinTransaction(IsisTransactionManager.java:133) at > org.apache.isis.core.runtime.services.persistsession. > PersistenceSessionServiceInternalDefault.executeWithinTransaction( > PersistenceSessionServiceInternalDefault.java:179) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract.invoke( > ActionInvocationFacetForDomainEventAbstract.java:161) at > org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault. > executeInternal(ObjectActionDefault.java:398) at org.apache.isis.core. > metamodel.specloader.specimpl.ObjectActionDefault.execute(ObjectActionDefault.java:387) > at org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler. > handleActionMethod(DomainObjectInvocationHandler.java:671) at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler. > invoke(DomainObjectInvocationHandler.java:284) at > org.apache.isis.core.wrapper.proxy.ProxyCreator$1.invoke(ProxyCreator.java:72) > at mydom.dom.supplier.subscription.SupplierAnyOfferChangedNotific > ationRepository_$$_jvstfc5_1b.downloadToDatabaseAndDeleteFromQueue( > SupplierAnyOfferChangedNotificationRepository_$$_jvstfc5_1b.java) at > mydom.dom.supplier.subscription.SupplierCompetitionAnalysisService. > downloadCompetitorsInformation(SupplierCompetitionAnalysisService.java:531) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at sun.reflect.DelegatingMethodAccessorImpl.invoke( > DelegatingMethodAccessorImpl.java:43) at > java.lang.reflect.Method.invoke(Method.java:483) > at org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract.invokeMethodElseFromCache( > ActionInvocationFacetForDomainEventAbstract.java:408) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract$2.execute( > ActionInvocationFacetForDomainEventAbstract.java:262) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract$2.execute( > ActionInvocationFacetForDomainEventAbstract.java:1) at > org.apache.isis.applib.services.iactn.Interaction. > executeInternal(Interaction.java:173) at org.apache.isis.applib. > services.iactn.Interaction.execute(Interaction.java:143) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract.doInvoke( > ActionInvocationFacetForDomainEventAbstract.java:311) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract$1.execute( > ActionInvocationFacetForDomainEventAbstract.java:165) at > org.apache.isis.core.runtime.system.transaction.IsisTransactionManager. > executeWithinTransaction(IsisTransactionManager.java:143) at > org.apache.isis.core.runtime.system.transaction.IsisTransactionManager. > executeWithinTransaction(IsisTransactionManager.java:133) at > org.apache.isis.core.runtime.services.persistsession. > PersistenceSessionServiceInternalDefault.executeWithinTransaction( > PersistenceSessionServiceInternalDefault.java:179) at > org.apache.isis.core.metamodel.facets.actions.action.invocation. > ActionInvocationFacetForDomainEventAbstract.invoke( > ActionInvocationFacetForDomainEventAbstract.java:161) at > org.apache.isis.core.metamodel.specloader.specimpl.ObjectActionDefault. > executeInternal(ObjectActionDefault.java:398) at org.apache.isis.core. > metamodel.specloader.specimpl.ObjectActionDefault.execute(ObjectActionDefault.java:387) > at org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler. > handleActionMethod(DomainObjectInvocationHandler.java:671) at > org.apache.isis.core.wrapper.handlers.DomainObjectInvocationHandler. > invoke(DomainObjectInvocationHandler.java:284) at > org.apache.isis.core.wrapper.proxy.ProxyCreator$1.invoke(ProxyCreator.java:72) > at mydom.dom.supplier.subscription.SupplierCompetitionAnalysisSer > vice_$$_jvstfc5_19.downloadCompetitorsInformation( > SupplierCompetitionAnalysisService_$$_jvstfc5_19.java) at > mydom.dom.supplier.subscription.schedule.DownloadCompetitorsInformation$ > SupplierUpdateCompetitionInformationRunnable. > executeWithinExceptionHandler(DownloadCompetitorsInformation.java:57) at > mydom.dom.scheduler.mydomSessionTemplate.doExecuteWithTransaction(mydomSessionTemplate.java:17) > at org.apache.isis.core.runtime.sessiontemplate. > AbstractIsisSessionTemplate$1.execute(AbstractIsisSessionTemplate.java:66) > at org.apache.isis.core.runtime.system.transaction.IsisTransactionManager. > executeWithinTransaction(IsisTransactionManager.java:143) at > org.apache.isis.core.runtime.system.transaction.IsisTransactionManager. > executeWithinTransaction(IsisTransactionManager.java:133) at > org.apache.isis.core.runtime.sessiontemplate.AbstractIsisSessionTemplate. > doExecute(AbstractIsisSessionTemplate.java:63) at > org.apache.isis.core.runtime.sessiontemplate.AbstractIsisSessionTemplate. > execute(AbstractIsisSessionTemplate.java:41) at mydom.dom.scheduler. > AbstractIsisQuartzJob.execute(AbstractIsisQuartzJob.java:51) at > org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.simpl. > SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) ®ƒ
