We've noticed this problem as well. It only happens on Tomcat. I'm not sure 
what is going on, but it all starts with Tomcat loosing query parameters on 
the ws-request ("url/?0-1.IBehaviorListener.0-" is changed to "url"). This 
makes it impossible for wicket to recognize the call to a behavior, causing a 
redirect to a new page on the ws-request, which is not allowed.

The question is, is this a bug in Tomcat, Atmosphere or wicket-atmosphere. I 
would say it's a bug in Atmosphere. I've created a ticket for this:
https://github.com/Atmosphere/atmosphere/issues/553

For now, using jetty is a work around.

Best regards,
Emond

On Wednesday 08 August 2012 20:59:10 Pierre Goupil wrote:
> Hello,
> 
> It looks like a problem with the WebSockets. I've tried to provide a
> Locale, but no way:
> 
> class MySession extends WebSession
> {
>     private static final long serialVersionUID = 1L;
> 
>     public MySession(final Request req)
>     {
>         super(req);
>     }
> 
>     @Override
>     public void setLocale(final Locale locale)
>     {
>         super.setLocale(new Locale("en", "GB"));
>     }
> }
> 
> and in my WicketApplication:
> 
>     @Override
>       public Session newSession( final Request req, final Response res ) {
>         return new MySession(req);
>       }
> 
> It all gives me the same error.
> 
> BUT if I deactivate the WebSockets, it works:
> 
>         <init-param>
>             <param-name>org.atmosphere.useWebSocket</param-name>
>             <param-value>FALSE</param-value>
>         </init-param>
> 
> in my web.xml.
> 
> Regards,
> 
> Pierre
> 
> On Wed, Aug 8, 2012 at 5:43 PM, Pierre Goupil <goupilpie...@gmail.com>wrote:
> > Good afternoon,
> > 
> > I'm currently trying and have wicket-atmosphere work. I've looked at the
> > examples and I'm unable to post a message because of this exception:
> > 
> > 
> > INFO  - EventBus                   - registering component for page 0 for
> > session 971E81ED0E61970FA35A1B03E5B218F8:
> > ERROR - DefaultExceptionMapper     - Unexpected error occurred
> > java.lang.IllegalStateException: Request#getLocale() cannot return null,
> > request has to have a locale set on it
> > 
> >     at org.apache.wicket.Session.<init>(Session.java:211)
> >     at
> > 
> > org.apache.wicket.protocol.http.WebSession.<init>(WebSession.java:92)
> > 
> >     at
> > 
> > org.apache.wicket.protocol.http.WebApplication.newSession(WebApplication.j
> > ava:536)> 
> >     at
> > 
> > org.apache.wicket.Application.fetchCreateAndSetSession(Application.java:15
> > 57)> 
> >     at org.apache.wicket.Session.get(Session.java:152)
> >     at
> > 
> > org.apache.wicket.RestartResponseAtInterceptPageException$InterceptData.ge
> > t(RestartResponseAtInterceptPageException.java:146)> 
> >     at
> > 
> > org.apache.wicket.RestartResponseAtInterceptPageException$1.matchedData(Re
> > startResponseAtInterceptPageException.java:211)> 
> >     at
> > 
> > org.apache.wicket.RestartResponseAtInterceptPageException$1.getCompatibili
> > tyScore(RestartResponseAtInterceptPageException.java:179)> 
> >     at
> > 
> > org.apache.wicket.request.mapper.CompoundRequestMapper.mapRequest(Compound
> > RequestMapper.java:134)> 
> >     at
> > 
> > org.apache.wicket.request.cycle.RequestCycle.resolveRequestHandler(Request
> > Cycle.java:182)> 
> >     at
> > 
> > org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.j
> > ava:207)> 
> >     at
> > 
> > org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(Reque
> > stCycle.java:281)> 
> >     at
> > 
> > org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.j
> > ava:188)> 
> >     at
> > 
> > org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:24
> > 5)> 
> >     at
> > 
> > org.atmosphere.util.AtmosphereFilterChain.doFilter(AtmosphereFilterChain.j
> > ava:154)> 
> >     at
> > 
> > org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilt
> > erChain.java:131)> 
> >     at
> > 
> > org.atmosphere.handler.ReflectorServletProcessor$FilterChainServletWrapper
> > .service(ReflectorServletProcessor.java:310)> 
> >     at
> > 
> > org.atmosphere.handler.ReflectorServletProcessor.onRequest(ReflectorServle
> > tProcessor.java:168)> 
> >     at
> > 
> > org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java
> > :248)> 
> >     at
> > 
> > org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.j
> > ava:166)> 
> >     at
> > 
> > org.atmosphere.container.TomcatWebSocketUtil.doService(TomcatWebSocketUtil
> > .java:120)> 
> >     at
> > 
> > org.atmosphere.container.Tomcat7BIOSupportWithWebSocket.service(Tomcat7BIO
> > SupportWithWebSocket.java:57)> 
> >     at
> > 
> > org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.
> > java:1222)> 
> >     at
> > 
> > org.atmosphere.websocket.WebSocketProcessor.dispatch(WebSocketProcessor.ja
> > va:187)> 
> >     at
> > 
> > org.atmosphere.websocket.WebSocketProcessor.dispatch(WebSocketProcessor.ja
> > va:116)> 
> >     at
> > 
> > org.atmosphere.container.TomcatWebSocketHandler.onOpen(TomcatWebSocketHand
> > ler.java:58)> 
> >     at
> > 
> > org.apache.catalina.websocket.StreamInbound.onUpgradeComplete(StreamInboun
> > d.java:228)> 
> >     at
> > 
> > org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Abstr
> > actProtocol.java:593)> 
> >     at
> > 
> > org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.jav
> > a:310)> 
> >     at
> > 
> > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:
> > 1110)> 
> >     at
> > 
> > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java
> > :603)> 
> >     at java.lang.Thread.run(Thread.java:679)
> > 
> > My code is pretty straight-forward, but just in case, here is the
> > Application:
> > 
> > @Override
> > 
> >     public void init()
> >     {
> >     
> >         super.init();
> >         
> >         eventBus = new EventBus(this);
> >         
> >         ScheduledExecutorService scheduler =
> > 
> > Executors.newScheduledThreadPool(1);
> > 
> >         final Runnable beeper = new Runnable()
> >         {
> >         
> >             @Override
> >             public void run()
> >             {
> >             
> >                 try
> >                 {
> >                 
> >                     eventBus.post(new Date());
> >                 
> >                 }
> >                 catch (Exception e)
> >                 {
> >                 
> >                     e.printStackTrace();
> >                 
> >                 }
> >             
> >             }
> >         
> >         };
> >         scheduler.scheduleWithFixedDelay(beeper, 2, 2, TimeUnit.SECONDS);
> > 
> > }
> > 
> > 
> > 
> > 
> > And here is the code that should trigger but that doesn't:
> > 
> > public HomePage(final PageParameters parameters)
> > 
> >     {
> >     
> >         super(parameters);
> >         
> >         timeLabel = new Label("version", Model.of("-"));
> >         timeLabel.setOutputMarkupId(true);
> >         add(timeLabel);
> >     
> >     }
> >     
> >     @Subscribe
> >     public void updateTime(AjaxRequestTarget target, Date event)
> >     {
> >     
> >         timeLabel.setDefaultModelObject(event.toString());
> >         target.add(timeLabel);
> >     
> >     }
> > 
> > I'm using Wicket-6.0.0-beta3 and its wicket-atmosphere 0.2.
> > 
> > Thanks in advance,
> > 
> > Pierre
> > 
> > 
> > 
> > 
> > --
> > Le bonheur n'est pas une destination, mais une façon de voyager.
> > 
> > Papa d'une petite Lou-Ann depuis le 30 juin.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to