You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by cordenier christophe <ch...@gmail.com> on 2009/10/21 09:45:08 UTC
Re: Catch Throwable insteads of RuntimeException in
org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject()
I don't know if this can help, but verify the javassist version you have in
your application is conformed to the latest Tapestry version => 3.9.0.GA
Regards
Christophe.
2009/10/21 Xuan Tran Le <xu...@myvietnam.net>
> Hi dear,
>
> I'm running Tapestry 5.1.0.5 on IBM Websphere Portal 6.1 and I have an
> error: when create object "ActionResponse", it throws java.lang.VerifyError
> (please ignore why it cause java.lang.VerifyError). I wanna say that in
> RecursiveServiceCreationCheckWrapper.createObject() method you catch only
> RuntimeException, this is your code:
> ----------------
> public Object createObject()
> {
> if (locked)
> throw new
> IllegalStateException(IOCMessages.recursiveServiceBuild(serviceDef));
>
> // Set the lock, to ensure that recursive service construction
> fails.
>
> locked = true;
>
> try
> {
> return delegate.createObject();
> }
> catch (RuntimeException ex)
> {
> logger.error(IOCMessages.serviceConstructionFailed(serviceDef,
> ex), ex);
>
> // Release the lock on failure; the service is now in an unknown
> state, but we may
> // be able to continue from here.
>
> locked = false;
>
> throw ex;
> }
>
> }
> ----------------
> and it cause "locked" variable not be changed to "false", it means that
> "locked" is "true" now. Then when later it try to create this object again,
> then it cause
> IllegalStateException(IOCMessages.recursiveServiceBuild(serviceDef)).
>
> I think that you should change
> RecursiveServiceCreationCheckWrapper.createObject() method by catch
> Throwable insteads of RuntimeException.
>
> This is the full stacktrace:
>
> [10/21/09 11:16:29:015 ICT] 00000039 SystemOut O 2009-10-21
> 11:16:28,968
> ERROR [WebContainer : 0] TapestryModule.RequestExceptionHandler
> (DefaultRequestExceptionHandler.java:62) - Processing of request failed
> with uncaught exception: class loading constraint violated (class:
> $ActionResponse_124754f5af3 method:
> setEvent(Ljavax/xml/namespace/QName;Ljava/io/Serializable;)V) at pc: 0
> java.lang.VerifyError: class loading constraint violated (class:
> $ActionResponse_124754f5af3 method:
> setEvent(Ljavax/xml/namespace/QName;Ljava/io/Serializable;)V) at pc: 0
> at java.lang.J9VMInternals.verifyImpl(Native Method)
> at java.lang.J9VMInternals.verify(J9VMInternals.java:68)
> at java.lang.J9VMInternals.initialize(J9VMInternals.java:129)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at
>
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:67)
> at
>
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:522)
> at
>
> org.apache.tapestry5.ioc.internal.ModuleImpl.createProxyInstance(ModuleImpl.java:490)
> at
>
> org.apache.tapestry5.ioc.internal.ModuleImpl.createProxy(ModuleImpl.java:449)
> at
> org.apache.tapestry5.ioc.internal.ModuleImpl.access$900(ModuleImpl.java:32)
> at
> org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:297)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
> at
>
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
> at
>
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
> at
> org.apache.tapestry5.ioc.internal.ModuleImpl.create(ModuleImpl.java:321)
> at
> org.apache.tapestry5.ioc.internal.ModuleImpl.access$100(ModuleImpl.java:32)
> at
> org.apache.tapestry5.ioc.internal.ModuleImpl$1.invoke(ModuleImpl.java:181)
> at
>
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withWrite(ConcurrentBarrier.java:140)
> at
> org.apache.tapestry5.ioc.internal.ModuleImpl$2.invoke(ModuleImpl.java:197)
> at
>
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
> at
>
> org.apache.tapestry5.ioc.internal.ModuleImpl.findOrCreate(ModuleImpl.java:203)
> at
> org.apache.tapestry5.ioc.internal.ModuleImpl.getService(ModuleImpl.java:98)
> at
>
> org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:320)
> at
>
> org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:566)
> at
>
> org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:44)
> at
>
> org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl$1.invoke(MasterObjectProviderImpl.java:56)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
> at
>
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
> at
>
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
> at
>
> org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:41)
> at
>
> $MasterObjectProvider_124754f5a1a.provide($MasterObjectProvider_124754f5a1a.java)
> at
>
> org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:696)
> at
>
> org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getObject(ObjectLocatorImpl.java:49)
> at
>
> org.apache.tapestry5.ioc.internal.util.InternalUtils$4.run(InternalUtils.java:319)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:52)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:50)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:48)
> at
>
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:56)
> at
> org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:936)
> at
>
> org.apache.tapestry5.ioc.internal.util.InternalUtils.injectIntoFields(InternalUtils.java:304)
> at
>
> org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:64)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
> at
>
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
> at
>
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
> at
>
> org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
> at
>
> org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
> at
>
> org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:60)
> at
>
> org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:52)
> at
>
> org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
> at
>
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
> at
>
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
> at
>
> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:68)
> at
>
> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:57)
> at
>
> $GenericRequestResponseService_124754f5a89.delegate($GenericRequestResponseService_124754f5a89.java)
> at
>
> $GenericRequestResponseService_124754f5a89.getGenericResponse($GenericRequestResponseService_124754f5a89.java)
> at
>
> com.mvnsoft.mvncms.tapestry5.base.BasePage.getGenericResponse(BasePage.java:69)
> at
> com.mvnsoft.mvncms.tapestry5.base.BasePage.activate(BasePage.java:105)
> at
>
> com.mvnsoft.mvncms.tapestry5.base.BasePage.dispatchComponentEvent(BasePage.java)
> at
>
> com.mvnsoft.mvncms.tapestry5.pages.publishadmin.Index.dispatchComponentEvent(Index.java)
> .......................
> [10/21/09 11:27:44:890 ICT] 00000039 SystemOut O
> ===java.lang.RuntimeException: Exception constructing service
> 'GenericRequestResponseService': Construction of service
> 'GenericRequestResponseService' has failed due to recursion: the service
> depends on itself in some way. Please check
>
> com.mvnsoft.mvncms.tapestry5.services.GenericRequestResponseServiceImplPortlet()
> (at GenericRequestResponseServiceImplPortlet.java:30) via
>
> com.mvnsoft.mvncms.tapestry5.services.MvnPublishAdminPortletModule.bind(ServiceBinder)
> (at MvnPublishAdminPortletModule.java:30) for references to another service
> that is itself dependent on service 'GenericRequestResponseService'.
>
Re: Catch Throwable insteads of RuntimeException in
org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject()
Posted by Xuan Tran Le <le...@gmail.com>.
Thanks. The javassist version I'm using is 3.9.0.GA <http://3.9.0.ga/>. I
think this maybe because the libs are corrupted (between stax-api-1.0.1.jar
and jdk of websphere???? because javax/xml/namespace/QName existed in both).
On Wed, Oct 21, 2009 at 2:45 PM, cordenier christophe <
christophe.cordenier@gmail.com> wrote:
> I don't know if this can help, but verify the javassist version you have in
> your application is conformed to the latest Tapestry version => 3.9.0.GA
>
> Regards
> Christophe.
>
> 2009/10/21 Xuan Tran Le <xu...@myvietnam.net>
>
> > Hi dear,
> >
> > I'm running Tapestry 5.1.0.5 on IBM Websphere Portal 6.1 and I have an
> > error: when create object "ActionResponse", it throws
> java.lang.VerifyError
> > (please ignore why it cause java.lang.VerifyError). I wanna say that in
> > RecursiveServiceCreationCheckWrapper.createObject() method you catch only
> > RuntimeException, this is your code:
> > ----------------
> > public Object createObject()
> > {
> > if (locked)
> > throw new
> > IllegalStateException(IOCMessages.recursiveServiceBuild(serviceDef));
> >
> > // Set the lock, to ensure that recursive service construction
> > fails.
> >
> > locked = true;
> >
> > try
> > {
> > return delegate.createObject();
> > }
> > catch (RuntimeException ex)
> > {
> > logger.error(IOCMessages.serviceConstructionFailed(serviceDef,
> > ex), ex);
> >
> > // Release the lock on failure; the service is now in an
> unknown
> > state, but we may
> > // be able to continue from here.
> >
> > locked = false;
> >
> > throw ex;
> > }
> >
> > }
> > ----------------
> > and it cause "locked" variable not be changed to "false", it means that
> > "locked" is "true" now. Then when later it try to create this object
> again,
> > then it cause
> > IllegalStateException(IOCMessages.recursiveServiceBuild(serviceDef)).
> >
> > I think that you should change
> > RecursiveServiceCreationCheckWrapper.createObject() method by catch
> > Throwable insteads of RuntimeException.
> >
> > This is the full stacktrace:
> >
> > [10/21/09 11:16:29:015 ICT] 00000039 SystemOut O 2009-10-21
> > 11:16:28,968
> > ERROR [WebContainer : 0] TapestryModule.RequestExceptionHandler
> > (DefaultRequestExceptionHandler.java:62) - Processing of request
> failed
> > with uncaught exception: class loading constraint violated (class:
> > $ActionResponse_124754f5af3 method:
> > setEvent(Ljavax/xml/namespace/QName;Ljava/io/Serializable;)V) at pc: 0
> > java.lang.VerifyError: class loading constraint violated (class:
> > $ActionResponse_124754f5af3 method:
> > setEvent(Ljavax/xml/namespace/QName;Ljava/io/Serializable;)V) at pc: 0
> > at java.lang.J9VMInternals.verifyImpl(Native Method)
> > at java.lang.J9VMInternals.verify(J9VMInternals.java:68)
> > at java.lang.J9VMInternals.initialize(J9VMInternals.java:129)
> > at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
> > at
> >
> >
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:67)
> > at
> >
> >
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> > at java.lang.reflect.Constructor.newInstance(Constructor.java:522)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.createProxyInstance(ModuleImpl.java:490)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.createProxy(ModuleImpl.java:449)
> > at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.access$900(ModuleImpl.java:32)
> > at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$4.invoke(ModuleImpl.java:297)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
> > at
> > org.apache.tapestry5.ioc.internal.ModuleImpl.create(ModuleImpl.java:321)
> > at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.access$100(ModuleImpl.java:32)
> > at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$1.invoke(ModuleImpl.java:181)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withWrite(ConcurrentBarrier.java:140)
> > at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl$2.invoke(ModuleImpl.java:197)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.findOrCreate(ModuleImpl.java:203)
> > at
> >
> org.apache.tapestry5.ioc.internal.ModuleImpl.getService(ModuleImpl.java:98)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:320)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:566)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getService(ObjectLocatorImpl.java:44)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl$1.invoke(MasterObjectProviderImpl.java:56)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.services.MasterObjectProviderImpl.provide(MasterObjectProviderImpl.java:41)
> > at
> >
> >
> $MasterObjectProvider_124754f5a1a.provide($MasterObjectProvider_124754f5a1a.java)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.getObject(RegistryImpl.java:696)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.ObjectLocatorImpl.getObject(ObjectLocatorImpl.java:49)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.util.InternalUtils$4.run(InternalUtils.java:319)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:52)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:50)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:48)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:56)
> > at
> > org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:936)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.util.InternalUtils.injectIntoFields(InternalUtils.java:304)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.ConstructorServiceCreator.createObject(ConstructorServiceCreator.java:64)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.SingletonServiceLifecycle.createService(SingletonServiceLifecycle.java:29)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.LifecycleWrappedServiceCreator.createObject(LifecycleWrappedServiceCreator.java:46)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.AdvisorStackBuilder.createObject(AdvisorStackBuilder.java:60)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.InterceptorStackBuilder.createObject(InterceptorStackBuilder.java:52)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.RecursiveServiceCreationCheckWrapper.createObject(RecursiveServiceCreationCheckWrapper.java:60)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator$1.invoke(OperationTrackingObjectCreator.java:45)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:68)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:941)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.OperationTrackingObjectCreator.createObject(OperationTrackingObjectCreator.java:49)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.obtainObjectFromCreator(JustInTimeObjectCreator.java:68)
> > at
> >
> >
> org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator.createObject(JustInTimeObjectCreator.java:57)
> > at
> >
> >
> $GenericRequestResponseService_124754f5a89.delegate($GenericRequestResponseService_124754f5a89.java)
> > at
> >
> >
> $GenericRequestResponseService_124754f5a89.getGenericResponse($GenericRequestResponseService_124754f5a89.java)
> > at
> >
> >
> com.mvnsoft.mvncms.tapestry5.base.BasePage.getGenericResponse(BasePage.java:69)
> > at
> > com.mvnsoft.mvncms.tapestry5.base.BasePage.activate(BasePage.java:105)
> > at
> >
> >
> com.mvnsoft.mvncms.tapestry5.base.BasePage.dispatchComponentEvent(BasePage.java)
> > at
> >
> >
> com.mvnsoft.mvncms.tapestry5.pages.publishadmin.Index.dispatchComponentEvent(Index.java)
> > .......................
> > [10/21/09 11:27:44:890 ICT] 00000039 SystemOut O
> > ===java.lang.RuntimeException: Exception constructing service
> > 'GenericRequestResponseService': Construction of service
> > 'GenericRequestResponseService' has failed due to recursion: the service
> > depends on itself in some way. Please check
> >
> >
> com.mvnsoft.mvncms.tapestry5.services.GenericRequestResponseServiceImplPortlet()
> > (at GenericRequestResponseServiceImplPortlet.java:30) via
> >
> >
> com.mvnsoft.mvncms.tapestry5.services.MvnPublishAdminPortletModule.bind(ServiceBinder)
> > (at MvnPublishAdminPortletModule.java:30) for references to another
> service
> > that is itself dependent on service 'GenericRequestResponseService'.
> >
>