wicket-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ernesto Reinaldo Barreiro <reier...@gmail.com>
Subject Re: Application Scope
Date Tue, 06 May 2014 14:02:45 GMT
It is not a limitation of wicket but J2EE specification.


On Tue, May 6, 2014 at 3:52 PM, Richard W. Adams <RWADAMS1@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.meillet@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 <RWADAMS1@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 <mgrigorov@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 <RWADAMS1@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 <mgrigorov@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 <RWADAMS1@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.Rogers@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:RWADAMS1@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-unsubscribe@wicket.apache.org
> >>> For additional commands, e-mail: users-help@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.
> **
>



-- 
Regards - Ernesto Reinaldo Barreiro

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message