Right, so my question was, can I get Tapestry IoC to create me a new
session for this new thread that won't be affected by anything else. I
could duplicate the (lots) of code in the request filter, but that
seems wrong.
Norman Franke
Answering Service for Directors, Inc.
www.myasd.com
On Sep 1, 2010, at 6:11 PM, Kalle Korhonen wrote:
On Wed, Sep 1, 2010 at 2:46 PM, Norman Franke <nor...@myasd.com>
wrote:
The new thread is the one that will run in the background. My
concern, and
it may not be a concern, is that the request processing will have
created my
DAO objects associated with a Hibernate session in that thread, and
I'll
access it from another thread (the one running in the background.)
I was
worried that when the request finishes, Tapestry will release the
DAO and
Hibernate session.
Right. The DAOs don't matter (or if they do, you've designed them
wrong), the entities do. The entity objects will become detached from
the session after its closed. Don't hold onto the session longer than
you have to, and remember that if you didn't create the session
yourself, don't close it yourself and vice versa. If you are just
(periodically) reading from the database, you'll only run into session
issues in case you are using lazily-loaded objects. If you write
periodically, make sure your entities are attached to a separate
session.
Kalle
On Sep 1, 2010, at 5:27 PM, Kalle Korhonen wrote:
Thread safety is your responsibility, but services are singleton by
default and it shouldn't matter to your DAOs which threads they are
accessed from. What you need to worry about is the consistency of
your
data. When you say "the new thread is created to process the data",
what do you mean by it? If you are just writing to the database,
then
the database will handle the integrity of the data. If you do some
in-memory processing of the data, then the integrity of it is
yours to
handle.
Kalle
On Wed, Sep 1, 2010 at 2:12 PM, Norman Franke <nor...@myasd.com>
wrote:
Will there be some issue with the injected services? This async
service
when
created will have it's injected services created in the thread of
the
current web request. When the new thread is created to process
the data,
the
services will then be accessed from a different thread.
Norman Franke
Answering Service for Directors, Inc.
www.myasd.com
On Sep 1, 2010, at 4:03 PM, Kalle Korhonen wrote:
ParallelExecutor is a "service that allows work to occur in
parallel
using a thread pool". I doubt it's usefulness in your case. Simply
create a new service, spawn threads in it as needed to do work and
implement a few get status operations that your page(s) can
call. That
way, keeping the page up-to-date via AJAX is a separate concern.
Kalle
On Wed, Sep 1, 2010 at 12:06 PM, Norman Franke
<nor...@myasd.com> wrote:
I need a page that will start a long-running process involving
heavy
use
of
a database. I'm trying to come up with an elegant way to
integrate this
into
my T5.1 app. I'd like to use Tapestry's IoC to inject my
Hibernate
DAOs.
Then I'd like to write status updates to a stack and have an AJAX
process
poll and update the web page with what's happening.
I see there is a ParallelExecutor in Tapestry, but I don't
think it
does
injection.
Any good solutions out there?
Norman Franke
Answering Service for Directors, Inc.
www.myasd.com
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org