cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Willerding <awillerd...@itsurcom.com>
Subject Standalone app, Threads and Object contexts
Date Mon, 30 Apr 2012 17:36:48 GMT
I have built a few Web apps using Cayenne quite successfully but now I 
am building my first standalone app and have a few questions.

In a Web app, I have typically just setup my Tomcat configuration and in 
my code I execute something like ObjectContext context = 
BaseContext.getThreadObjectContext() and let the "magic" happen.

In my standalone application I don't think it will be quite that easy.  
I will have multiple short lived threads requesting database information 
simultaneously so I'm not quite sure how to manage the Cayenne 
components.  At first I thought I could simple do a 
DataContext.createDataContext() and I'd be fine but "Creating a new 
DataContext for each request is not a recommended practice."  So I 
understand the need for a single DataContext and so I think I found the 
answer in createChildContext() but,

1)  Do I need to manually create a child context in each thread?  But 
what should I do when the thread has completed its transactions and is 
ready to terminate?  I don't see a corresponding "destroyChildContext"

             ObjectContext oc = getDataContext().createChildContext();

2)  Or is it better to create a pool of ObjectContexts that I have to 
manually manage access to within the threads - or does Cayenne have 
something like this already built-in?

3)  Is the maximum simultaneous createChildContext calls  tied to the 
ConnectionPool limits in the Modeler?  To me the "createChildContext" 
implies creation without limit so if they are somehow linked how will I 
know that the underlying ConnectionPool has run out of resources?

4)  Or am I way off base and making things more complicated than they 
should be? ;-)

Sorry if I've missed the answers somewhere in the documentation but I 
haven't been able to Google successfully for something I've fully 
understood.

Thanks,

Andrew






Mime
View raw message