Thanks Kalle - this will be very useful for me - I'll make it more service
oriented and inject the new session.

Regards,
Jim.

-----Original Message-----
From: Kalle Korhonen [mailto:kalle.o.korho...@gmail.com] 
Sent: 22 July 2010 17:48
To: Tapestry users
Subject: Re: non thread safe access to session

To create an absolutely *new* session (even if another thread-bound
session already exists), inject HibernateSessionSource and call
hibernateSessionSource.getSessionFactory().create(), then manage
transactions and all objects in that session yourself.

Kalle


On Thu, Jul 22, 2010 at 9:38 AM, Jim O'Callaghan <jc1000...@yahoo.co.uk>
wrote:
> I do get direct access to the session from the under a very specific
> circumstance to allow me to commit a separate transaction unconditionally,
> to facilitate keeping a pre-allocated batch of keys in memory - I can't
have
> this transaction rolled back due to a problem somewhere else, or I am left
> with keys that the application thinks are available, but in reality the
> sequence hasn't been updated in the database due to a rollback.  The new
> session is created using session.getSessionFactory().openSession() within
a
> single method invocation, which I'm guessing leaves me open to thread
safety
> issues. I'm going to rearrange it to make it more service based.  I think
> this is just down to bad coding practice.
>
> Regards,
> Jim.
>
> -----Original Message-----
> From: Josh Canfield [mailto:joshcanfi...@gmail.com]
> Sent: 22 July 2010 16:25
> To: Tapestry users
> Subject: Re: non thread safe access to session
>
>> I do however have some buried code where I force a transaction to commit
> to allow me to assign some non-customer facing entity keys in batches, to
> reduce db hits - this is probably causing the problem - I'll synchronize
> that as it's not called too often and hopefully that will do it.  Thanks
for
> the tips guys.
>
> I'm curious why you'd need to synchronize anything to do what you've
> described. You shouldn't be getting any cross-thread access to a single
> session.
>
> -- Josh
>
> On Jul 22, 2010, at 1:16 AM, "Jim O'Callaghan" <jc1000...@yahoo.co.uk>
> wrote:
>
>> Jonathon, Howard,
>>
>> Thanks for the responses.  I'm leaning towards Howard's explanation.  The
> processes are accessing newly created / persisted objects so I don't think
> sharing attached objects across more than one session should arise.  I do
> however have some buried code where I force a transaction to commit to
allow
> me to assign some non-customer facing entity keys in batches, to reduce db
> hits - this is probably causing the problem - I'll synchronize that as
it's
> not called too often and hopefully that will do it.  Thanks for the tips
> guys.
>>
>> Regards,
>> Jim.
>>
>> -----Original Message-----
>> From: Jonathan Barker [mailto:jonathan.theit...@gmail.com]
>> Sent: 22 July 2010 02:31
>> To: Tapestry users
>> Subject: Re: non thread safe access to session
>>
>> Jim,
>>
>> I have vague recollections of hitting this before.
>>
>> IIRC, each hibernate object knows the Session that it is associated with.
>> So, if an object is associated with Session A on Thread A, and you modify
>> that object from Thread B, then Session A now has to manage changes made
>> from a different thread, which presents lots of challenges.
>>
>> So, I think it's not so much about your handling of the Sessions, as it
is
>> about handling session-managed objects that get accessed from different
>> threads.
>>
>> Can you detach your objects before allowing other threads to access them?
>>
>> Regards,
>>
>> Jonathan
>>
>>
>> On Wed, Jul 21, 2010 at 1:29 PM, Jim O'Callaghan
> <jc1000...@yahoo.co.uk>wrote:
>>
>>> Yep Thiago, it's Tapestry-Hibernate creating the sessions.  My situation
>>> might be a little contrived, but I'm concerned  it might happen to
>>> end-users, as I don't fully understand why it's happening.
>>>
>>> Regards,
>>> Jim.
>>>
>>> -----Original Message-----
>>> From: Thiago H. de Paula Figueiredo [mailto:thiag...@gmail.com]
>>> Sent: 21 July 2010 18:22
>>> To: Tapestry users
>>> Subject: Re: non thread safe access to session
>>>
>>> On Wed, 21 Jul 2010 13:58:15 -0300, Jim O'Callaghan
>>> <jc1000...@yahoo.co.uk> wrote:
>>>
>>>> Hi Thiago,
>>>
>>> Hi, Jim!
>>>
>>>> I'm talking about the hibernate session - I'm injecting it into the
>>>> constructor of Service B at bind time.  I thought Tapestry would treat
>>>> the service as a thread safe singleton and control access to method
>>>> calls on it accordingly?
>>>
>>> Tapestry-IoC doesn't synchronize method calls. How are you building the
>>> sessions? Tapestry-Hibernate?
>>>
>>> --
>>> Thiago H. de Paula Figueiredo
>>> Independent Java, Apache Tapestry 5 and Hibernate consultant, developer,
>>> and instructor
>>> Owner, Ars Machina Tecnologia da Informa??o Ltda.
>>> http://www.arsmachina.com.br
>>>
>>> ---------------------------------------------------------------------
>>> 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
>>>
>>>
>>
>>
>> --
>> Jonathan Barker
>> ITStrategic
>>
>>
>> ---------------------------------------------------------------------
>> 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
>
>

---------------------------------------------------------------------
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

Reply via email to