hivemind-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Johan Lindquist <>
Subject Re: Pipelines, Threaded services - is there any more documentation?
Date Sat, 07 Apr 2007 12:18:55 GMT
Hi Jochen,

I don't think anyone got offended by your comment, it holds as true for
Hivemind as it does for many other projects out there.

I agree that more easy to follow examples are needed (and it has been
discussed on the dev list recently).  The Hivemind 2.0 documentation
currently lives on a WIKI, which will make it easier for people to
contribute documentation but this is not the case for the 1.0 versions.

In any case, doc updates will always be valuable to the project and most
welcome.  Btw, I hope I speak for the committers here too and not
stepping on anyones toes ;)

As for calling thread cleanup when a thread is finished, please have a
look at the org.apache.hivemind.Registry API, it is defined there.  [1]




Jochen Zimmermann wrote:
> Hi Johan!
> Thanks for your answer!
> According to your answer I think the servlet filters describe more of
> what I need than the pipelines ... right now I solved it with a service
> that includes my three other services (injected by the framework of
> course) and handles the forwarding of the results. That works for me, I
> was just curios if the pipelines are meant to do something like that.
> To come back to the documentation:
> It was not my point to offend anyone involved in that project or the
> project itself (just to say it again :-)
> There is good documentation to get started, the most useful part is the
> calculator example.
> Beyond the example there is enough documentation to get an idea what you
> can do with Hivemind, but the explanation is to general ....
> Concrete example: Multithreading service model:
> It is explained how it works generally and then there is the following
> sentence in the documentation.
> "The service instance is discarded when notified to cleanup; this is
> controlled by the hivemind.ThreadEventNotifier service. If your
> application has any threaded services, you are responsible for invoking
> the fireThreadCleanup() method of the service."
> I really, really tried to work out how to do this with research in the
> internet, but I still can't do it .... and there are some more things
> like that in the documentation: it is mentioned, with some hint how to
> do it, but to vague to do it immediately.
> Perhaps it is really easy to do, but with just about 5 days Hivemind -
> experience it is not ... :-(
> Just some more concrete coding examples would be really great!
> If I ever find out how to do the task mentioned above I will work out an
> easy example and post it as you suggested, I promise this :-)
> Regards
> Jochen
> Original Message ----- From: "Johan Lindquist" <>
> To: <>
> Sent: Saturday, April 07, 2007 12:48 PM
> Subject: Re: Pipelines, Threaded services - is there any more
> documentation?
>> Hi Jochen,
>> Right from the start, the Hivemind project has aimed to provide clear
>> and concise instructions and information but as you also understand,
>> this is of course not always possible.  However, if you have some
>> changes you'd like to contribute, I am quite confident such help is
>> always welcome.  I would suggest you create a JIRA for it, attach the
>> changes you think see fit and someone will take a look and update the
>> documentation to reflect this.
>> As for you questions relating to the "pipeline" - I am not sure this is
>> a good fit to your problem - the pipeline is very similar to the
>> interceptors in that it allows arbitrary implementations to slot in
>> between the service interface and the actual implementation and the
>> pipeline, as opposed to the interceptors, work with the service
>> interface definition directly and have the exact same parameters defined
>> by the service interface (plus the additional parameter being the next
>> service in the pipeline to invoke).  So, in short, the pipeline is a
>> "more typed" version of the interceptor.  I have used the pipeline quite
>> effectively for validation of parameters and simple caching.
>> The scenario you are describing sounds more like the Filters in the
>> Servlet API - each filter gets invoked and they may pass parameters
>> "down" the chain by adding data to the servlet request - does that match
>> more what you have in mind?
>> Cheers,
>> Johan
>> Jochen Zimmermann wrote:
>>> Hello!
>>> Right now I get used to Hivemind and I am starting to like it very
>>> much :-)
>>> BUT .... I really think there is a massive lack of documentation.
>>> I know (as I work for a software company myself) that writing
>>> documentation is not really the favorite thing to do and I'm very happy
>>> that my company has a own department doing this job, but on the other
>>> hand: the coolest software is of no use if no one can use it :-)
>>> And even if I found out a lot by myself right now it is frustrating to
>>> trial and error for 3 hours (or more) just to find out how easy it is
>>> done if you know how to do it (in a sense it is even more frustrating
>>> than it would be if it would be hard to do ;-)
>>> The API help does not help me that much, because they don't really
>>> describe how to do things in the context of the framework.
>>> If there is more documentation and I'm just to stupid to find it, please
>>> point me to it!!
>>> Again, I like Hivemind very much already, I even would volunteer to
>>> write some documentation.
>>> What about the cookbook? I read in the newsgroup about it, but I could
>>> not find it.
>>> I don't know much about Hivemind right now, but as I hope to find out
>>> more about it in the near future I could write about the  things I learn
>>> (and perhaps it is not to bad to describe it from a beginners point of
>>> view), and if there would be a start, perhaps others would join in?
>>> But after that outburst of frustration (after trial and error the whole
>>> afternoon) some questions:
>>> 1.:
>>> At the moment I have three services, and I need them executed in a row.
>>> A -> give results to -> B -> give results to -> C
>>> Each of them is used (or at least could be used) alone from another
>>> point of the application, so I want to keep them separated.
>>> I found something about pipelines in the net, but I could not find more
>>> documentation on how to use them, I even did not found out if they are
>>> really intended to do what I need here.
>>> 2.:
>>> I tried to build my own "pipeline" using threaded services bundled
>>> together in a "parent" service.
>>> I got it working, but: after processing about 2500 objects that way I
>>> get a java out of memory error.
>>> After searching the internet a little more I found out that I should
>>> clean up.
>>> Can someone post me a little example of a threaded service including the
>>> "clean up" part?
>>> Thanks a lot for your time again!
>>> Jochen
>> -- 
>> you too?

you too?

View raw message