You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Lina Thomas <lt...@taxcient.com> on 2010/02/03 04:25:40 UTC

AbstractAjaxTimerBehaviour sets Transient object to null when same page in opened in new tab

Hi

        I have a Page on which I am have to execute a long running task when
a form is submitted.  This is what I do


   1. I have a transient FutureTask member variable in the page
   2. On submit of the form i create a callable and instantiate
   the FutureTask
   3. I start the AbstractAjaxTimerBehaviour which keeps checking if
   the FutureTask is done before it can update a panel in the page with the
   result of the execution.
      - This works fine when I'm on the same page
      - Now if I submit the form and while the AbstractAjaxTimerBehaviour is
      still polling I open the same page *in a new tab* *within the same
      session* then the reference to the FutureTask in the first page
      (previous tab) becomes null.

I couldn't find any solution to this problem. Any help would be greatly
appreciated.

Thanks
-Lina

Re: AbstractAjaxTimerBehaviour sets Transient object to null when same page in opened in new tab

Posted by LinaTomy <lt...@taxcient.com>.
Thanks a lot Igor. This works!!


igor.vaynberg wrote:
> 
> if you keep working on the same page instance it is kept in http
> sessison and is not serialized. when you go to a new page it pushes
> the old instance out, forcing serialization, and setting the transient
> field to null.
> 
> a proper way to do this would be to have an application-wide task
> manager. the code may look something like this:
> 
> BackgroundTask bt=Application.get().getTaskManager().start(new
> runnable(){});
> taskId=bt.getId(); <== task id is a simple string that you can pass
> around, usually a UUID
> 
> then later when you want to poll status
> BackgroundTask bt=Application.get().getTaskManager().get(taskid);
> bt.getFuture().....
> 
> -igor
> 
> On Tue, Feb 2, 2010 at 7:25 PM, Lina Thomas <lt...@taxcient.com> wrote:
>> Hi
>>
>>        I have a Page on which I am have to execute a long running task
>> when
>> a form is submitted.  This is what I do
>>
>>
>>   1. I have a transient FutureTask member variable in the page
>>   2. On submit of the form i create a callable and instantiate
>>   the FutureTask
>>   3. I start the AbstractAjaxTimerBehaviour which keeps checking if
>>   the FutureTask is done before it can update a panel in the page with
>> the
>>   result of the execution.
>>      - This works fine when I'm on the same page
>>      - Now if I submit the form and while the AbstractAjaxTimerBehaviour
>> is
>>      still polling I open the same page *in a new tab* *within the same
>>      session* then the reference to the FutureTask in the first page
>>      (previous tab) becomes null.
>>
>> I couldn't find any solution to this problem. Any help would be greatly
>> appreciated.
>>
>> Thanks
>> -Lina
>>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/AbstractAjaxTimerBehaviour-sets-Transient-object-to-null-when-same--page-in-opened-in-new-tab-tp27430960p27464133.html
Sent from the Wicket - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: AbstractAjaxTimerBehaviour sets Transient object to null when same page in opened in new tab

Posted by Igor Vaynberg <ig...@gmail.com>.
if you keep working on the same page instance it is kept in http
sessison and is not serialized. when you go to a new page it pushes
the old instance out, forcing serialization, and setting the transient
field to null.

a proper way to do this would be to have an application-wide task
manager. the code may look something like this:

BackgroundTask bt=Application.get().getTaskManager().start(new runnable(){});
taskId=bt.getId(); <== task id is a simple string that you can pass
around, usually a UUID

then later when you want to poll status
BackgroundTask bt=Application.get().getTaskManager().get(taskid);
bt.getFuture().....

-igor

On Tue, Feb 2, 2010 at 7:25 PM, Lina Thomas <lt...@taxcient.com> wrote:
> Hi
>
>        I have a Page on which I am have to execute a long running task when
> a form is submitted.  This is what I do
>
>
>   1. I have a transient FutureTask member variable in the page
>   2. On submit of the form i create a callable and instantiate
>   the FutureTask
>   3. I start the AbstractAjaxTimerBehaviour which keeps checking if
>   the FutureTask is done before it can update a panel in the page with the
>   result of the execution.
>      - This works fine when I'm on the same page
>      - Now if I submit the form and while the AbstractAjaxTimerBehaviour is
>      still polling I open the same page *in a new tab* *within the same
>      session* then the reference to the FutureTask in the first page
>      (previous tab) becomes null.
>
> I couldn't find any solution to this problem. Any help would be greatly
> appreciated.
>
> Thanks
> -Lina
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org