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