My solution to similar problem was to use following pattern that
excluded services that lead to recursion:
@Match("(?!(" +
"Request" +
"|ObjectProvider" +
"|AssetObjectProvider" +
"|PerRequestCache" +
"|Alias" +
"|AliasManager" +
"|ServiceOverride" +
"|Logger" +
"|Registry" +
"|ApplicationDefaults" +
"|SymbolProvider" +
"|SymbolSource" +
"|SymbolObjectProvider" +
"|MasterObjectProvider" +
"|ObjectLocator" +
"|ServletApplicationInitializer" +
"|PipelineBuilder" +
"|TypeCoercer" +
"|ServiceAdvisor)).*")
I can not say that it is the best way, but it worked for me (Tapestry 5.2).
Generally you should avoid decorating/advising everything.
Best regards,
Cezary
On Mon, 1 Apr 2013 14:37:08 -0400 Michael Prescott
<michael.r.presc...@gmail.com> wrote:
I'm having trouble applying service advisor according to the instructions
here:
My TapestryModule contains only this, as per the example on
http://tapestry.apache.org/service-advisors.html :
@Match("*")
public static void adviseLogging(LoggingAdvisor loggingAdvisor,
Logger logger, MethodAdviceReceiver receiver)
{
loggingAdvisor.addLoggingAdvice(logger, receiver);
}
This leads to a recursive IoC exeption:
2013-04-01 14:35:01,252 [main] ERROR org.apache.tapestry5.ioc.Registry
- Construction of service 'AssetObjectProvider' h
as failed due to recursion: the service depends on itself in some way.
Please check org.apache.tapestry5.internal.servic
es.AssetObjectProvider(AssetSource, TypeCoercer, SymbolSource) (at
AssetObjectProvider.java:45) via org.apache.tapestry5
.services.TapestryModule.bind(ServiceBinder) (at
TapestryModule.java:308) for references to another service that is
itse
lf dependent on service 'AssetObjectProvider'.
2013-04-01 14:35:01,253 [main] ERROR org.apache.tapestry5.ioc.Registry
- Operations trace:
2013-04-01 14:35:01,254 [main] ERROR org.apache.tapestry5.ioc.Registry
- [ 1] Realizing service ServletApplicationInitia
lizer
2013-04-01 14:35:01,255 [main] ERROR org.apache.tapestry5.ioc.Registry
- [ 2] Instantiating service ServletApplicationIn
itializer implementation via
org.apache.tapestry5.services.TapestryModule.buildServletApplicationInitializer(Logger,
Lis
t, ApplicationInitializer) (at TapestryModule.java:1396)
2013-04-01 14:35:01,256 [main] ERROR org.apache.tapestry5.ioc.Registry
- [ 3] Constructing module class org.apache.tapes
try5.services.TapestryModule
2013-04-01 14:35:01,257 [main] ERROR org.apache.tapestry5.ioc.Registry
- [ 4] Determining injection value for parameter
#1 (org.apache.tapestry5.ioc.services.PipelineBuilder)
2013-04-01 14:35:01,258 [main] ERROR org.apache.tapestry5.ioc.Registry
- [ 5] Resolving object of type org.apache.tapest
ry5.ioc.services.PipelineBuilder using MasterObjectProvider
2013-04-01 14:35:01,259 [main] ERROR org.apache.tapestry5.ioc.Registry
- [ 6] Realizing service AssetObjectProvider
2013-04-01 14:35:01,259 [main] ERROR org.apache.tapestry5.ioc.Registry
- [ 7] Invoking com.tsg.fss.web.services.Tapestry
Module.adviseLogging(LoggingAdvisor, Logger, MethodAdviceReceiver) (at
TapestryModule.java:107)
2013-04-01 14:35:01,261 [main] ERROR org.apache.tapestry5.ioc.Registry
- [ 8] Creating plan to invoke public static void
com.tsg.fss.web.services.TapestryModule.adviseLogging(org.apache.tapestry5.ioc.services.LoggingAdvisor,org.slf4j.Logger
,org.apache.tapestry5.ioc.MethodAdviceReceiver)
2013-04-01 14:35:01,261 [main] ERROR org.apache.tapestry5.ioc.Registry
- [ 9] Determining injection value for parameter
#1 (org.apache.tapestry5.ioc.services.LoggingAdvisor)
2013-04-01 14:35:01,262 [main] ERROR org.apache.tapestry5.ioc.Registry
- [10] Resolving object of type org.apache.tapest
ry5.ioc.services.LoggingAdvisor using MasterObjectProvider
2013-04-01 14:35:01,263 [main] ERROR org.apache.tapestry5.ioc.Registry
- [11] Realizing service AssetObjectProvider
2013-04-01 14:35:01,268 [main] ERROR
org.apache.tapestry5.services.TapestryModule.AssetObjectProvider -
Construction of
service AssetObjectProvider failed: Exception constructing service
'AssetObjectProvider': Construction of service 'Asset
ObjectProvider' has failed due to recursion: the service depends on
itself in some way. Please check org.apache.tapestry
5.internal.services.AssetObjectProvider(AssetSource, TypeCoercer,
SymbolSource) (at AssetObjectProvider.java:45) via org
.apache.tapestry5.services.TapestryModule.bind(ServiceBinder) (at
TapestryModule.java:308) for references to another ser
vice that is itself dependent on service 'AssetObjectProvider'.
Caused by: java.lang.IllegalStateException: Construction of service
'AssetObjectProvider' has failed due to recursion: the service depends
on itself in some way. Please check
org.apache.tapestry5.internal.services.AssetObjectProvider(AssetSource,
TypeCoercer, SymbolSource) (at AssetObjectProvider.java:45) via
org.apache.tapestry5.services.TapestryModule.bind(ServiceBinder) (at
TapestryModule.java:308) for references to another service that is
itself dependent on service 'AssetObjectProvider'.
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org