ClassCastException when using ReloadingWicketFilter
---------------------------------------------------
Key: WICKET-749
URL: https://issues.apache.org/jira/browse/WICKET-749
Project: Wicket
Issue Type: Bug
Components: wicket
Affects Versions: 1.3.0-beta2
Environment: OS: Ubuntu Linux
JDK: 1.5.0_11
COntainer: Jetty via Maven (mvn jetty:run)
Reporter: Matt Welch
Priority: Minor
Reference Threads:
http://www.nabble.com/Has-something-changed-in-markup-inheritance--tf3963374.html
http://www.nabble.com/Classcastexception-and-getSession-tf3979399.html
In summary, in certain situations, classes that should be loaded by the
ReloadingClassLoader are being loaded by the container's normal classloader.
While this happens in several situations, the most obvious and repeatable is
when using the browser's back button. I will attach a small app that
demonstrates this issue after submitting this bug.
The steps needed to recreate this issue int he demo app are actually quite odd,
so this may seem like a fringe issue, however in our real app, the situations
comes up much easier and with much more frequency.
Steps:
1) Unzip the attached file.
2) Assuming Maven is installed, run "mvn jetty:run" inside the project
directory.
3) Use your browser to go to http://127.0.0.1:8080/app
4) Click "Second Link"
5) Use your browser back functionality and then click "Second Link" again.
Everything should work fine.
6) You should now be be on a page with the words "Second changed10". If not,
click "Second Link" to get there. Use the browser to refresh that page.
7) Refreshing should have caused a "Page Expired" error. That's ok, that isn't
the issue. Click the browser back button to go back tot he first page.
8) Click "Second Link" again. This should generate the ClassCastException.
If you disable the Reloading filter or if yo comment out the include/exclude
lines int he included FusionReloadingWicketFilters you can go through the same
steps and not generate a ClassCastError.
As I mentioned above. This may seem like a very fringe case with all the the
refreshing and back buttons, but that just because that's the first and most
reliable way I found to recreate this issue in this tiny demo app. The issue
occurs under all kinds of situations in my real app including almost always
after I modify a java file and recompile it which is the primary use case for
the ReloadingClassloader.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.