You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Michael Gerzabek <mi...@gmx.net> on 2008/09/19 19:32:05 UTC
IoC Question with Alias
Hi,
I have a problem with the contributions to the alias service. The
AppModule is ...
public static void bind( ServiceBinder binder ) {
binder.bind( SiteDispatcher.class ).withId( "SiteDispatcher" );
binder.bind( SiteServiceImpl.class ).withId( "SiteService" );
binder.bind( HttpdRequestSecurityManager.class ).withId(
"HttpdRequestSecurityManager" );
binder.bind( SiteBaseURLSource.class ).withId( "SiteBaseURLSource" );
}
@SuppressWarnings( "unchecked" )
public void contributeAlias(
Configuration<AliasContribution> configuration,
@InjectService( "HttpdRequestSecurityManager" )
RequestSecurityManager manager,
@InjectService( "SiteBaseURLSource" )
BaseURLSource baseUrlSource ) {
configuration.add( AliasContribution.create(
BaseURLSource.class,
baseUrlSource ) );
configuration.add( AliasContribution.create(
RequestSecurityManager.class,
manager ) );
}
The constructors of the services are ...
public SiteServiceImpl(
RequestGlobals globals,
ApplicationGlobals application,
Session session,
Logger logger,
Collection<String> contributions,
SymbolSource symbols ) {
...
}
public HttpdRequestSecurityManager(
Request request,
Response response,
MetaDataLocator locator,
RequestPageCache requestPageCache,
@InjectService("SiteBaseURLSource")
BaseURLSource baseURLSource,
SiteService site ) {
...
}
public SiteBaseURLSource( SiteService site ) {
...
}
I get the [ERROR] Alias Construction of service Alias failed: Error
invoking service builder method
org.apache.tapestry5.services.TapestryModule.build(Logger, String,
AliasManager, Collection) (at TapestryModule.java:205) (for service
'Alias'): Error invoking service contribution method
com.flexibelinstitut.tapestry5.site.SiteModule.contributeAlias(Configuration,
RequestSecurityManager, BaseURLSource): Error building service proxy for
service 'HttpdRequestSecurityManager' (at
com.flexibelinstitut.tapestry5.site.services.internal.HttpdRequestSecurityManager(Request,
Response, MetaDataLocator, RequestPageCache, BaseURLSource, SiteService)
(at HttpdRequestSecurityManager.java:26)): Error invoking constructor
com.flexibelinstitut.tapestry5.site.services.internal.HttpdRequestSecurityManager(Request,
Response, MetaDataLocator, RequestPageCache, BaseURLSource, SiteService)
(at HttpdRequestSecurityManager.java:26) (for service
'HttpdRequestSecurityManager'): Exception constructing service 'Alias':
Construction of service 'Alias' has failed due to recursion: the service
depends on itself in some way. Please check
org.apache.tapestry5.services.TapestryModule.build(Logger, String,
AliasManager, Collection) (at TapestryModule.java:205) for references to
another service that is itself dependent on service 'Alias'.
And I don't even have a clue where to look. I tried a lot of different
version with @Inject, with @InjectService("..") on the constructors the
contributeAlias(..) method. But none of them seems to work.
Any ideas?
/M
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org
Re: IoC Question with Alias
Posted by Kristian Marinkovic <kr...@porsche.co.at>.
hi michael,
happened to me several times too :)
first you could try to define your services as proxy:
from:
binder.bind(HttpdRequestSecurityManager.class).withId("HttpdRequestSecurityManager");
to:
binder.bind(RequestSecurityManager.class,
HttpdRequestSecurityManager.class).withId("HttpdRequestSecurityManager");
if this is not enough try to break the dependency cycle by
injecting the ObjectLocator and creating the proxy manually
eg:
configuration.add( AliasContribution.create(
RequestSecurityManager.class,
locator.proxy(
RequestSecurityManager.class,
HttpdRequestSecurityManager.class)) );
see also following post
http://tapestry-user.markmail.org/search/?q=kristian+marinkovic#query:kristian%20marinkovic%20order%3Adate-backward+page:1+mid:pmmti5eoegosg2n5+state:results
g,
kris
Michael Gerzabek <mi...@gmx.net>
19.09.2008 19:32
Bitte antworten an
"Tapestry users" <us...@tapestry.apache.org>
An
users@tapestry.apache.org
Kopie
Thema
IoC Question with Alias
Hi,
I have a problem with the contributions to the alias service. The
AppModule is ...
public static void bind( ServiceBinder binder ) {
binder.bind( SiteDispatcher.class ).withId( "SiteDispatcher" );
binder.bind( SiteServiceImpl.class ).withId( "SiteService" );
binder.bind( HttpdRequestSecurityManager.class ).withId(
"HttpdRequestSecurityManager" );
binder.bind( SiteBaseURLSource.class ).withId( "SiteBaseURLSource" );
}
@SuppressWarnings( "unchecked" )
public void contributeAlias(
Configuration<AliasContribution> configuration,
@InjectService( "HttpdRequestSecurityManager" )
RequestSecurityManager manager,
@InjectService( "SiteBaseURLSource" )
BaseURLSource baseUrlSource ) {
configuration.add( AliasContribution.create(
BaseURLSource.class,
baseUrlSource ) );
configuration.add( AliasContribution.create(
RequestSecurityManager.class,
manager ) );
}
The constructors of the services are ...
public SiteServiceImpl(
RequestGlobals globals,
ApplicationGlobals application,
Session session,
Logger logger,
Collection<String> contributions,
SymbolSource symbols ) {
...
}
public HttpdRequestSecurityManager(
Request request,
Response response,
MetaDataLocator locator,
RequestPageCache requestPageCache,
@InjectService("SiteBaseURLSource")
BaseURLSource baseURLSource,
SiteService site ) {
...
}
public SiteBaseURLSource( SiteService site ) {
...
}
I get the [ERROR] Alias Construction of service Alias failed: Error
invoking service builder method
org.apache.tapestry5.services.TapestryModule.build(Logger, String,
AliasManager, Collection) (at TapestryModule.java:205) (for service
'Alias'): Error invoking service contribution method
com.flexibelinstitut.tapestry5.site.SiteModule.contributeAlias(Configuration,
RequestSecurityManager, BaseURLSource): Error building service proxy for
service 'HttpdRequestSecurityManager' (at
com.flexibelinstitut.tapestry5.site.services.internal.HttpdRequestSecurityManager(Request,
Response, MetaDataLocator, RequestPageCache, BaseURLSource, SiteService)
(at HttpdRequestSecurityManager.java:26)): Error invoking constructor
com.flexibelinstitut.tapestry5.site.services.internal.HttpdRequestSecurityManager(Request,
Response, MetaDataLocator, RequestPageCache, BaseURLSource, SiteService)
(at HttpdRequestSecurityManager.java:26) (for service
'HttpdRequestSecurityManager'): Exception constructing service 'Alias':
Construction of service 'Alias' has failed due to recursion: the service
depends on itself in some way. Please check
org.apache.tapestry5.services.TapestryModule.build(Logger, String,
AliasManager, Collection) (at TapestryModule.java:205) for references to
another service that is itself dependent on service 'Alias'.
And I don't even have a clue where to look. I tried a lot of different
version with @Inject, with @InjectService("..") on the constructors the
contributeAlias(..) method. But none of them seems to work.
Any ideas?
/M
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org