You can’t, and it isn’t a deficiency, just think about e.g. session replication 
among multiple cluster nodes.

Cheers,
   -Tom


On 06.05.2014, at 15:52, Richard W. Adams <rwada...@up.com> wrote:

> I assume that means we can't store non-serializable objects in the 
> session? This is sounding like a serious deficiency in Wicket's 
> architecture...
> 
> 
> 
> 
> From:   Francois Meillet <francois.meil...@gmail.com>
> To:     users@wicket.apache.org
> Date:   05/06/2014 08:48 AM
> Subject:        Re: Application Scope
> 
> 
> 
> sessions are serialised
> 
> François Meillet
> Formation Wicket - Développement Wicket
> 
> 
> 
> 
> 
> Le 6 mai 2014 à 15:28, Richard W. Adams <rwada...@up.com> a écrit :
> 
>> One more question: Since each task is associated with a single user, 
> would 
>> it make more sense to create a task map in Session scope? Or will Wicket 
> 
>> try to serialize a map we put into the session?
>> 
>> 
>> 
>> 
>> From:   Martin Grigorov <mgrigo...@apache.org>
>> To:     "users@wicket.apache.org" <users@wicket.apache.org>
>> Date:   05/06/2014 08:06 AM
>> Subject:        Re: Application Scope
>> 
>> 
>> 
>> Please don't change the thread subject for all your answers. This 
> confuses
>> the threading support in some mail clients.
>> 
>> I meant *My*Application, i.e. *Your*Application.
>> Add this method and map/associate all tasks that your run to some 
> id/key.
>> Serialize the key and later get a reference to the FutureTask with
>> something like:
>> YourApp.get().getTasks().get(theKey).isDone()/.isCanceled()/...
>> 
>> Martin Grigorov
>> Wicket Training and Consulting
>> 
>> 
>> On Tue, May 6, 2014 at 2:50 PM, Richard W. Adams <rwada...@up.com> 
> wrote:
>> 
>>> Are you referring to org.apache.wicket.Application? I don't see a
>>> getTasksMap() method there.  We use Wicket 1.4.17 & our company will 
> not
>>> allow us to upgrade to newer versions). If getTasksMap() is unavailable 
> 
>> in
>>> 1.4.17, could Application.getSharedResources() be used in a similar 
> way?
>>> 
>>> 
>>> 
>>> 
>>> From:   Martin Grigorov <mgrigo...@apache.org>
>>> To:     "users@wicket.apache.org" <users@wicket.apache.org>
>>> Date:   05/06/2014 07:26 AM
>>> Subject:        Re: Background Threading
>>> 
>>> 
>>> 
>>> Hi,
>>> 
>>> You can put the tasks in an application scoped structure (e.g.
>>> MyApplication.get().getTasksMap()) and use a serializable key.
>>> 
>>> Martin Grigorov
>>> Wicket Training and Consulting
>>> 
>>> 
>>> On Tue, May 6, 2014 at 2:11 PM, Richard W. Adams <rwada...@up.com> 
>> wrote:
>>> 
>>>> Interesting approach. Our use case is more complex, as it runs a
>>>> background task in a separate thread. Our task has three basic
>>>> requirements. It must:
>>>> 
>>>> 1. Be cancellable.
>>>> 
>>>> 2. Report its outcome (success/failure/warning).
>>>> 
>>>> 3. Report incremental progress.
>>>> 
>>>> Our fundamental problem is not how to display the progress bar, it's 
>> how
>>>> to determine the outcome of the background thread. That's an
>>> unexpectedly
>>>> a tough nut to crack. The vast majority of examples we've seen use the
>>>> Runnable interface (which doesn't help us, as it can't be canceled or
>>>> return a value), rather than Callable interface (which meets our 
>> needs,
>>>> but doesn't seem to play well with Wicket)
>>>> 
>>>> 
>>>> 
>>>> 
>>>> From:   Colin Rogers <colin.rog...@objectconsulting.com.au>
>>>> To:     "users@wicket.apache.org" <users@wicket.apache.org>
>>>> Date:   05/05/2014 08:14 PM
>>>> Subject:        RE: Progress Bar
>>>> 
>>>> 
>>>> 
>>>> There is a pretty nifty, jquery based progress bar, in 
>> wicket-jquery-ui
>>>> library...
>>>> 
>>>> 
>>> 
>> 
> http://www.7thweb.net/wicket-jquery-ui/progressbar/DefaultProgressBarPage
>>>> 
>>>> Cheers,
>>>> Col.
>>>> 
>>>> -----Original Message-----
>>>> From: Richard W. Adams [mailto:rwada...@up.com]
>>>> Sent: Tuesday, 6 May 2014 3:19 AM
>>>> To: users@wicket.apache.org
>>>> Subject: Progress Bar
>>>> 
>>>> We have a requirement to implement a progress bar for long-running
>>> server
>>>> operations. We can't use the code at
>>>> https://github.com/wicketstuff/core/wiki/Progressbar, because it 
>> doesn't
>>>> meet our corporate user interface look-and-feel standards.
>>>> 
>>>> So, we started our own implementation. Our test page contains these
>>>> methods below (the TestExecutor below class implements
>>>> Callable<ExecutorResult>).
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
> //----------------------------------------------------------------------------------------------
>>>> private Component createButton() {
>>>>       return new AjaxButton("start-button") {
>>>>               private static final long serialVersionUID = -1;
>>>> 
>>>>               @Override protected void onSubmit(final
>>> AjaxRequestTarget
>>>> ajax, final Form<?> form) {
>>>> 
>>>>                       final ExecutorService service = Executors.
>>>> newSingleThreadExecutor();
>>>>                       try {
>>>>                               final ProgressBarTestPage page =
>>>> ProgressBarTestPage.this;
>>>>                               final TransactionData data = new
>>>> TransactionData (page.getId(), false);
>>>>                               final TestExecutor executor = new
>>>> TestExecutor(data, getPermissions());
>>>> 
>>>>                               executor.addListener(page);     //
>>> Request
>>>> notification when done
>>>>                               future = service.submit(executor); //
>>>> Begin execution
>>>>                               progressBarUpdater.start(ajax,
>>> executor);
>>>> // Start polling for progress
>>>> 
>>>>                       } catch (final Exception ex) {
>>>>                               throw new RuntimeException(ex);
>>>>                       }
>>>>                       service.shutdown();     // Terminate 
>> gracefully
>>>> (VM probably
>>>>               }               //      won't exit if we fail to do
>>> this)
>>>>       };
>>>> }
>>>> 
>>>> 
>>> 
>>> 
>> 
> //----------------------------------------------------------------------------------------------
>>>> /**
>>>>  Observer Pattern method to let us know when the task is done so we
>>> can
>>>> check how things went.
>>>> */
>>>> @Override public void executionComplete(final EnmCallableExecutor
>>>> executor) {
>>>> 
>>>>       try {
>>>>               if (!future.isCancelled()) { //
>>>> Unless execution was canceled
>>>>                       final ExecutorResult result = future.get(); //
>>>> Get the outcome
>>>>                       System.out.println(result);
>>>>                       /*
>>>>                        * TODO: Show success or error message
>>>>                        */
>>>>               }
>>>>       } catch (final Exception ex) {
>>>>               ex.printStackTrace();
>>>>       }
>>>> }
>>>> 
>>>> The ProgessBarUpdater class has this method:
>>>> 
>>>> 
>>>> 
>>> 
>>> 
>> 
> //----------------------------------------------------------------------------------------------
>>>> /**
>>>> * Displays the progress bar &amp; begins the polling. We don't start
>>> the
>>>> polling until
>>>> * explicitly told to do, for efficiency purposes.
>>>> * @param ajax The Ajax request wrapper.
>>>> * @param reporter The object to query for progress data.
>>>> */
>>>> public void start(final AjaxRequestTarget ajax, final ProgressReporter
>>>> reporter) {
>>>> 
>>>>       add(new AjaxSelfUpdatingTimerBehavior(Duration.seconds(2)) {
>>>>               private static final long serialVersionUID = 1L;
>>>> 
>>>>               @Override protected void onPostProcessTarget(final
>>>> AjaxRequestTarget ajax) {
>>>> 
>>>>                       final Progress progress =
>>> reporter.getProgress();
>>>>                       final String script =                   // 
>> Build
>>>> script to update
>>>>                               ProgressScript.build(progress);  //
>>>> progress bar
>>>>                       ajax.appendJavascript(script);
>>>>                       if (progress == null) {                 // If
>>>> operation is finished
>>>>                               final ProgressBarUpdater updater =
>>>>                                       ProgressBarUpdater.this;
>>>>                               updater.remove(this); //
>>>> Stop timer to prevent
>>>>                               ajax.addComponent(updater);  //
>>> pointless
>>>> polling
>>>>                       }
>>>>               }
>>>>       });
>>>>       ajax.addComponent(this);
>>>> }
>>>> 
>>>> The page also contains a Future object so we can check the result 
>> after
>>>> the thread finishes:
>>>> 
>>>>       private Future<ExecutorResult> future;
>>>> 
>>>> __________________________________________
>>>> 
>>>> Having said all that, here's the problem: When I click the page's
>>> button,
>>>> Wicket throws this error:
>>>> 
>>>>       Unable to serialize class: java.util.concurrent.FutureTask
>>>> 
>>>> The FutureTask object, I believe, is coming from the service.submit 
>> call
>>>> whose return value we store in our Future variable.
>>>> 
>>>> Does anyone know how to get around this roadblock?
>>>> 
>>>> 
>>>> 
>>>> **
>>>> 
>>>> This email and any attachments may contain information that is
>>>> confidential and/or privileged for the sole use of the intended
>>> recipient.
>>>> Any use, review, disclosure, copying, distribution or reliance by
>>> others,
>>>> and any forwarding of this email or its contents, without the express
>>>> permission of the sender is strictly prohibited by law.  If you are 
>> not
>>>> the intended recipient, please contact the sender immediately, delete
>>> the
>>>> e-mail and destroy all copies.
>>>> **
>>>> EMAIL DISCLAIMER This email message and its attachments are 
>> confidential
>>>> and may also contain copyright or privileged material. If you are not
>>> the
>>>> intended recipient, you may not forward the email or disclose or use 
>> the
>>>> information contained in it. If you have received this email message 
>> in
>>>> error, please advise the sender immediately by replying to this email
>>> and
>>>> delete the message and any associated attachments. Any views, 
>> opinions,
>>>> conclusions, advice or statements expressed in this email message are
>>>> those of the individual sender and should not be relied upon as the
>>>> considered view, opinion, conclusions, advice or statement of this
>>> company
>>>> except where the sender expressly, and with authority, states them to 
>> be
>>>> the considered view, opinion, conclusions, advice or statement of this
>>>> company. Every care is taken but we recommend that you scan any
>>>> attachments for viruses.
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>> 
>>>> 
>>>> 
>>>> 
>>>> **
>>>> 
>>>> This email and any attachments may contain information that is
>>>> confidential and/or privileged for the sole use of the intended
>>> recipient.
>>>> Any use, review, disclosure, copying, distribution or reliance by
>>> others,
>>>> and any forwarding of this email or its contents, without the express
>>>> permission of the sender is strictly prohibited by law.  If you are 
>> not
>>> the
>>>> intended recipient, please contact the sender immediately, delete the
>>>> e-mail and destroy all copies.
>>>> **
>>>> 
>>> 
>>> 
>>> 
>>> **
>>> 
>>> This email and any attachments may contain information that is
>>> confidential and/or privileged for the sole use of the intended 
>> recipient.
>>> Any use, review, disclosure, copying, distribution or reliance by 
>> others,
>>> and any forwarding of this email or its contents, without the express
>>> permission of the sender is strictly prohibited by law.  If you are not 
> 
>> the
>>> intended recipient, please contact the sender immediately, delete the
>>> e-mail and destroy all copies.
>>> **
>>> 
>> 
>> 
>> 
>> **
>> 
>> This email and any attachments may contain information that is 
> confidential and/or privileged for the sole use of the intended recipient. 
> Any use, review, disclosure, copying, distribution or reliance by others, 
> and any forwarding of this email or its contents, without the express 
> permission of the sender is strictly prohibited by law.  If you are not 
> the intended recipient, please contact the sender immediately, delete the 
> e-mail and destroy all copies.
>> **
> 
> 
> 
> 
> **
> 
> This email and any attachments may contain information that is confidential 
> and/or privileged for the sole use of the intended recipient.  Any use, 
> review, disclosure, copying, distribution or reliance by others, and any 
> forwarding of this email or its contents, without the express permission of 
> the sender is strictly prohibited by law.  If you are not the intended 
> recipient, please contact the sender immediately, delete the e-mail and 
> destroy all copies.
> **



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

Reply via email to