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