By the way, you can login using anonymous/anon.
On 12/11/07, James Carman <[EMAIL PROTECTED]> wrote: > You might also want to take a look at some of the HiveMind-based > projects at JavaForge. In particular, look at: > > http://svn.javaforge.com/svn/hivemind/hivemind-transaction > http://svn.javaforge.com/svn/hivemind/hivemind-hibernate3 > > Those two projects basically set up the Spring transaction/hibernate > support for you in HiveMind. I wrote those two projects after my > article. > > On 12/11/07, Alebu <[EMAIL PROTECTED]> wrote: > > Hi Kaspar, > > There is a tutorial on TSS about Hivemind by James Carman. > > http://www.theserverside.com/tt/articles/article.tss?l=HivemindBuzz > > And as example of interceptor there is a TransactionInterceptor. > > Perhaps it can help you to start your own solution. > > And dont be shy to ask help in mailing list. Hivemind is a great product > > but lack of > > documentation is most is thing about it, so others people help is very > > important. > > > > Kaspar Fischer wrote: > > > Dear Jean-François, > > > > > > Thank you for your email. I think I get the basic idea of what you are > > > saying: > > > Tell Hivemind to put the "begin()" and "commit()" around the relevant > > > methods > > > of Tapestry (and make it call "rollback()" on uncaught exceptions). Is > > > this > > > correct, so far? > > > > > > One first uncertainty in this is what Tapestry method I should intercept? > > > It can't be around a single page-request as redirecting, rewinding, > > > etc. won't > > > work then. Do you happen to know what might be the right method? > > > > > > I've taken a look at HiveTranse and understand parts of it. However, I do > > > not know where to start -- obviously, I need to inject my own "begin()" > > > and "commit()" as I am neither running Hibernate, not JDBC, etc. > > > directly. > > > > > > Could you maybe provide a few directions on how to write my HiveMind > > > interceptor? > > > Maybe it's easier without HiveTranse first? > > > > > > I am sorry if my questions are very basic, and I imagine it's probably > > > boring > > > for you. I can promise that I will post a solution to the tapestry > > > list and > > > also extend the article I've written at the Alfresco Wiki: > > > > > > > > > http://wiki.alfresco.com/wiki/Alfresco_and_Tapestry_on_the_Same_Tomcat_Installation > > > > > > > > > With this, you're help will hopefully not just help me but others as > > > well. > > > > > > Best, > > > Kaspar > > > > > > On 05.12.2007, at 14:09, Jean-Francois Poilpret wrote: > > > > > >> Hi Kaspar, > > >> > > >> I think you'd rather take a look at HiveMind interceptors rather than > > >> factories. > > >> You can create an Interceptor that will be called before and after any > > >> method of another service. > > >> There are several ways to create interceptors in HiveMind, take a > > >> look at > > >> HiveMind website to see simple examples. > > >> > > >> If you want to see a real-life implementation of such a system you > > >> may take > > >> a look at hivetranse (http://hivetranse.sourceforge.net) which > > >> implements > > >> the same kind of behavior as you are looking for. I think you could > > >> quite > > >> easily adapt one of the numerous hivetranse interceptors (choose one > > >> -the > > >> simples- as an example). > > >> > > >> Cheers > > >> > > >> Jean-Francois > > >> > > >> -----Original Message----- > > >> From: Kaspar Fischer [mailto:[EMAIL PROTECTED] > > >> Sent: Wednesday, December 05, 2007 7:32 PM > > >> To: [email protected] > > >> Subject: Using Hivemind to wrap a transaction around a request > > >> > > >> [Note: This is a cross-post; I have initially posted to the list > > >> [EMAIL PROTECTED] but I guess the issue is more related to > > >> hivemind, > > >> so I post here.] > > >> > > >> Hi list, > > >> > > >> I need to wrap "begin transaction" and "end transaction" actions around > > >> a task (a Tapestry web request, actually). I've read about Hivemind, > > >> > > >> http://www.nabble.com/hivemind-factory-service-tf251931.html#a704856 > > >> > > >> and configured a service point (see below). This works very well: my > > >> transaction is created, but I cannot see when it is ended (committed/ > > >> rolled back). > > >> > > >> More precisely, I am struggling with: > > >> > > >> * What method is called on the object created by the factory when it > > >> is discarded? It is threadDidDiscardService(), right? > > >> > > >> * How can I catch exceptions from my actual task so that I can do a > > >> rollback > > >> instead of a commit? > > >> > > >> I am new to Hivemind, so please excuse these rather simple questions. > > >> > > >> Many thanks for you patience! > > >> Kaspar > > >> > > >> -- > > >> Here's my configuration: > > >> > > >> <service-point > > >> interface="org.my.tapestry.alfresco.AlfrescoTransactionContext" > > >> id="alfrescoContext"> > > >> <invoke-factory service-id="AlfrescoTransactionFactory" > > >> model="threaded" /> > > >> </service-point> > > >> <service-point > > >> interface="org.apache.hivemind.ServiceImplementationFactory" > > >> id="AlfrescoTransactionFactory" parameters-occurs="none"> > > >> <create-instance > > >> class="org.my.tapestry.alfresco.AlfrescoTransactionFactory" /> > > >> </service-point> > > >> > > >> Here is my factory: > > >> > > >> public class AlfrescoTransactionFactory implements > > >> ServiceImplementationFactory, Discardable { > > >> > > >> public Object createCoreServiceImplementation > > >> (ServiceImplementationFactoryParameters factoryParameters) > > >> { > > >> System.err.println("createCoreServiceImplementation"); // gets > > >> called! > > >> UserTransaction transaction; > > >> ServiceRegistry serviceRegistry; > > >> try { > > >> transaction = > > >> AlfrescoApplicationInitializer.createAndBeginAuthenticatedTransaction > > >> (true); > > >> serviceRegistry = > > >> AlfrescoApplicationInitializer.getServiceRegistry(); > > >> } > > >> catch (Exception e) { > > >> throw new ApplicationRuntimeException("Could not create an > > >> Alfresco transactoin.", e); > > >> } > > >> return new AlfrescoTransactionContextImpl(transaction, > > >> serviceRegistry); > > >> } > > >> > > >> public void threadDidDiscardService() > > >> { > > >> System.err.println("threadDidDiscardService"); // never called! > > >> // ... end the transaction here (todo) > > >> } > > >> } > > >> > > > > > > > > > > >
