That's a javax.servlet restriction:

http://stackoverflow.com/questions/1662348/setattribute-non-serializable-attribute-java-object-serialization
http://stackoverflow.com/questions/3460249/java-httpsession-setattribute-throws-non-serializable-exception-on-qa-but-not-i

Sven

On 05/06/2014 03:52 PM, Richard W. Adams 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