Might be related to EagerLoad, if any EagerLoad-ed service uses the
BuilderFactory. Otherwise, you'd get it when you invoke a service
method on any implementation constructed by the BuilderFactory.

On Fri, 6 Aug 2004 09:56:20 -0400, James Carman
<[EMAIL PROTECTED]> wrote:
> Oh, it throws the exception.  The exception is thrown when trying to build
> the registry.
> 
> 
> 
> -----Original Message-----
> From: Howard Lewis Ship [mailto:[EMAIL PROTECTED]
> Sent: Friday, August 06, 2004 9:38 AM
> To: [email protected]
> Subject: Re: contributing an interceptor to multiple services
> 
> This is something that needs looking into, because the code is
> supposed to fail with an exception, rather than endlessly recurse. I
> even have a test for this, which is why I'm confused that it can
> happen!
> 
> On Thu, 5 Aug 2004 21:53:10 -0400, James Carman
> <[EMAIL PROTECTED]> wrote:
> > Ok, I got it to do it.  All you need to do is this (in your own module)...
> >
> > <implementation service-id="hivemind.BuilderFactory">
> >   <interceptor service-id="hivemind.LoggingInterceptor" />
> > </implementation>
> >
> > This does cause a recursive problem.  It fails when you try to build a
> > registry, though, so you won't get too far with that sort of
> configuration.
> >
> >
> >
> > -----Original Message-----
> > From: Christian Essl [mailto:[EMAIL PROTECTED]
> > Sent: Thursday, August 05, 2004 4:32 PM
> > To: [email protected]
> > Subject: Re: contributing an interceptor to multiple services
> >
> > James,
> >
> > At the danger that this has also been discussed before IMO the problem of
> > recursive calls as I see is as follows (maybe I take it too serious as IMO
> > Spring has sort of the same):
> >
> > An interceptor is created by an intercept able Service
> > (InterceptorFactory). The InterceptorFactory can be created again by an
> > intercept able Service (ServiceImplementationFactory). The interceptor
> > itself can use any intercept able service and each of this services can
> > use another intercept able service.
> >
> > So if you by mistake add the interceptor also to the InterceptorFactory or
> > the ServiceImplementationFactory you have a chicken-egg problem (which I
> > strongly guess will result in an Exception). But worse if you add the
> > interceptor to any of the direct or indirect services unconditional used
> > during the interception call (i.e. LoggingService) than you have an
> > endless loop, because the interceptor on the used service calls the
> > service again and by this way itself.
> >
> > What make it worse are modules. If you take care it is well possible that
> > your defined interceptor works until another module changes - than your
> > definition can be broken. IMO you would need full integration tests for
> > such a feature.
> >
> > As said probably I take the problem to serious, Spring (at least) had the
> > same, but in Spring it is easier to manage because there is not so much
> > indirection and you fully control all beans. Hivemind is just more
> > powerful than Spring that's why I like Hivemind more.
> >
> > On Thu, 5 Aug 2004 12:07:19 -0700 (PDT), <[email protected]>
> > wrote:
> >
> > > The following comment has been added to this issue:
> > >
> > >      Author: James Carman
> > >     Created: Thu, 5 Aug 2004 12:06 PM
> > >        Body:
> > > I don't know if I understand how this feature causes any dangers.  It's
> > > true that an interceptor could be called multiple times on the same
> > > thread during one service method invocation (a service you're calling
> > > uses another service which also has the same interceptor applied).  I
> > > guess a service interceptor COULD be written to have some
> > > thread-specific state (using ThreadLocalStorage of course) and it might
> > > not manage that properly.  However, that can arise if you do it by
> > > copy/paste also, no?  I wouldn't say that this feature would CAUSE that
> > > problem, though.
> > > ---------------------------------------------------------------------
> > > View this comment:
> > >
> >
> http://issues.apache.org/jira/browse/HIVEMIND-39?page=comments#action_37074
> > >
> > > ---------------------------------------------------------------------
> > > View the issue:
> > >   http://issues.apache.org/jira/browse/HIVEMIND-39
> > >
> > > Here is an overview of the issue:
> > > ---------------------------------------------------------------------
> > >         Key: HIVEMIND-39
> > >     Summary: The ability to specify multiple interfaces of a service
> > >        Type: Wish
> > >
> > >      Status: Open
> > >    Priority: Minor
> > >
> > >     Project: HiveMind
> > >  Components:
> > >              framework
> > >    Versions:
> > >              1.0
> > >
> > >    Assignee: Howard M. Lewis Ship
> > >    Reporter: Zhengmao Hu
> > >
> > >     Created: Thu, 5 Aug 2004 7:24 AM
> > >     Updated: Thu, 5 Aug 2004 12:06 PM
> > >
> > > Description:
> > > (Sorry, because sending email to
> > > [EMAIL PROTECTED] can not make me subscribe, so
> > > i post it here)
> > >
> > > Currently, one service can only have one interface specifiled.
> > >
> > > Inside ProxyBuilder.java, the proxy class built only implements this
> > > "major" interface. This behavior is coded as such:
> > >
> > > public ProxyBuilder(String type, ServicePoint point)
> > > {
> > >    ...
> > >    _classFab.addInterface(_serviceInterface);
> > >    ...
> > > }
> > >
> > > public void addServiceMethods(String indirection)
> > > {
> > >    ...
> > >    Method[] methods = _serviceInterface.getMethods();
> > >    for (int i = 0; i < methods.length; i++) ...
> > >    ...
> > > }
> > >
> > >
> > > Because of this behavior, if there is a class:
> > >
> > > class ServiceABImpl implements ServiceA, ServiceB
> > >
> > > This class will be wrapped inside a proxy class, but the proxy class can
> > > only implement one interface, that makes the usage of this class/service
> > > inconvienent.
> > >
> > > So, there is a wish, wish that more than one interfaces can be specified
> > > to one service.
> > >
> > >
> > > ---------------------------------------------------------------------
> > > JIRA INFORMATION:
> > > This message is automatically generated by JIRA.
> > >
> > > If you think it was sent incorrectly contact one of the administrators:
> > >    http://issues.apache.org/jira/secure/Administrators.jspa
> > >
> > > If you want more information on JIRA, or have a bug to report see:
> > >    http://www.atlassian.com/software/jira
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> >
> > --
> > Christian Essl
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> 
> --
> Howard M. Lewis Ship
> Independent J2EE / Open-Source Java Consultant
> Creator, Jakarta Tapestry
> Creator, Jakarta HiveMind
> http://howardlewisship.com
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 


-- 
Howard M. Lewis Ship
Independent J2EE / Open-Source Java Consultant
Creator, Jakarta Tapestry
Creator, Jakarta HiveMind
http://howardlewisship.com

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to