Marco Springer created WICKET-5051:
--------------------------------------
Summary: Incorrect URL rendered when using Comet
Key: WICKET-5051
URL: https://issues.apache.org/jira/browse/WICKET-5051
Project: Wicket
Issue Type: Bug
Components: wicket-atmosphere
Affects Versions: 6.6.0, 6.5.0
Environment: Ubuntu 12.04 using Oracle JAVA 1.7.0_13
Reporter: Marco Springer
Assignee: Emond Papegaaij
Priority: Minor
Initially I had a problem using Apache as a proxy in-front of a running Jetty
instance with WebSockets enable, with CometD as fallback.
I used the Apache config as described on
https://github.com/Atmosphere/atmosphere/wiki/How-to-run-Atmosphere-behind-Apache-WebServer.
With the above scenario running I only had problems with re-rendered markup
with link(s) in them. Links that are rendered through the usual client-server
requests are fine, even if they through normal Ajax calls.
As soon as a piece of markup was re-rendered through a push event the link was
bad, trying to open a website one path above the usual link, for example:
The application context path is '/appl/test', the link that comes from the
UrlRenderer was pointing to "/test" instead.
I thought it was a fault in my proxy config because directly accessing the
Jetty server on port 8080 is working fine!
What I seem to have missed was that somehow through the Apache proxy the
Atmosphere Framework was switching back to CometD.
How did I found out?
When I forcefully disabled WebSockets, forcing the CometD way to kick in, I had
the same URL problems again. Even though I'm accessing the Jetty instance
directly again on port 8080. Actually, using CometD the web application is
behaving very incorrect.
Sometimes the function(s) annotated with @Subscribe get called multiple times
without reason, again without the proxy.
If I turn on WebSockets again, all is fine.
The reason why I'm Apache using is because a whole lot of legacy applications
in our company are configured through Apache. I got some really bug-eyed views
when I proposed to migrate to Nginx at this stage. So using lighthttpd or Nginx
is out of the question unfortunately.
To nail things down a bit more, I have debugged back to the UrlRenderer class
in the "renderRelativeUrl" function, some mangling with the URL goes on in
here, prepending the "../" in the URL when the baseUrlSegments consists out of
more than 1 segment.
I don't know the internal reasons for this to be done but I can only see that
in my "push" event, this starts screwing things up a bit when using CometD.
I've attached a quickstart that contains 2 urls.
When "push" is clicked, the other browser instance should display (unhide) the
"aaaaaaaa" link.
In case of WebSockets, this works fine.
In case of CometD... well, meh. Sometimes the link unhides, sometimes it
doesn't. When the link unhides, it can't be clicked properly since it directs
to an incorrect context path.
I've also attached my very basic Apache proxy config, which is, well, the same
as the 1st link describes.
Thanks in advance.
Kind regards,
Marco
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira