You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Pierre Goupil <go...@gmail.com> on 2012/08/08 17:43:20 UTC

[6.0] wicket-atmosphere

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.java:536)
    at
org.apache.wicket.Application.fetchCreateAndSetSession(Application.java:1557)
    at org.apache.wicket.Session.get(Session.java:152)
    at
org.apache.wicket.RestartResponseAtInterceptPageException$InterceptData.get(RestartResponseAtInterceptPageException.java:146)
    at
org.apache.wicket.RestartResponseAtInterceptPageException$1.matchedData(RestartResponseAtInterceptPageException.java:211)
    at
org.apache.wicket.RestartResponseAtInterceptPageException$1.getCompatibilityScore(RestartResponseAtInterceptPageException.java:179)
    at
org.apache.wicket.request.mapper.CompoundRequestMapper.mapRequest(CompoundRequestMapper.java:134)
    at
org.apache.wicket.request.cycle.RequestCycle.resolveRequestHandler(RequestCycle.java:182)
    at
org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:207)
    at
org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:281)
    at
org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)
    at
org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:245)
    at
org.atmosphere.util.AtmosphereFilterChain.doFilter(AtmosphereFilterChain.java:154)
    at
org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilterChain.java:131)
    at
org.atmosphere.handler.ReflectorServletProcessor$FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)
    at
org.atmosphere.handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:168)
    at
org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:248)
    at
org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:166)
    at
org.atmosphere.container.TomcatWebSocketUtil.doService(TomcatWebSocketUtil.java:120)
    at
org.atmosphere.container.Tomcat7BIOSupportWithWebSocket.service(Tomcat7BIOSupportWithWebSocket.java:57)
    at
org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1222)
    at
org.atmosphere.websocket.WebSocketProcessor.dispatch(WebSocketProcessor.java:187)
    at
org.atmosphere.websocket.WebSocketProcessor.dispatch(WebSocketProcessor.java:116)
    at
org.atmosphere.container.TomcatWebSocketHandler.onOpen(TomcatWebSocketHandler.java:58)
    at
org.apache.catalina.websocket.StreamInbound.onUpgradeComplete(StreamInbound.java:228)
    at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:593)
    at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java: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.

Re: [6.0] wicket-atmosphere

Posted by Pierre Goupil <go...@gmail.com>.
Good afternoon,

Is there any way to have Comet channels using the wicket-atmosphere
API? For instance, with the Broadcaster API, you could use a
MetaBroadcaster which used to have a broadcasterID parameter.

I can't figure out how to integrate that in my wicket-atmosphere code
and the JavaDoc from EventBus#post() reads:

"Post an event to *all* pages that have a suspended connection".

Any help will be much appreciated!

Regards,

Pierre Goupil





On Thu, Aug 9, 2012 at 10:17 AM, Pierre Goupil <go...@gmail.com> wrote:
>
> Thanks!!! I'll have a close look at your ticket. And yes, I use Tomcat (7.0.29). I know it's all beta code, so no worries.
>
> Regards,
>
> Pierre
>
>
>
>
> On Thu, Aug 9, 2012 at 10:02 AM, Emond Papegaaij <em...@topicus.nl> wrote:
>>
>> 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 <go...@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-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>
>
>
> --
> Le bonheur n'est pas une destination, mais une façon de voyager.
>
> Papa d'une petite Lou-Ann depuis le 30 juin.
>



--
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-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: [6.0] wicket-atmosphere

Posted by Pierre Goupil <go...@gmail.com>.
Thanks!!! I'll have a close look at your ticket. And yes, I use Tomcat
(7.0.29). I know it's all beta code, so no worries.

Regards,

Pierre



On Thu, Aug 9, 2012 at 10:02 AM, Emond Papegaaij <emond.papegaaij@topicus.nl
> wrote:

> 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 <goupilpierre@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-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>


-- 
Le bonheur n'est pas une destination, mais une façon de voyager.

Papa d'une petite Lou-Ann depuis le 30 juin.

Re: [6.0] wicket-atmosphere

Posted by Emond Papegaaij <em...@topicus.nl>.
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 <go...@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-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: [6.0] wicket-atmosphere

Posted by Pierre Goupil <go...@gmail.com>.
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 <go...@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.java:536)
>     at
> org.apache.wicket.Application.fetchCreateAndSetSession(Application.java:1557)
>     at org.apache.wicket.Session.get(Session.java:152)
>     at
> org.apache.wicket.RestartResponseAtInterceptPageException$InterceptData.get(RestartResponseAtInterceptPageException.java:146)
>     at
> org.apache.wicket.RestartResponseAtInterceptPageException$1.matchedData(RestartResponseAtInterceptPageException.java:211)
>     at
> org.apache.wicket.RestartResponseAtInterceptPageException$1.getCompatibilityScore(RestartResponseAtInterceptPageException.java:179)
>     at
> org.apache.wicket.request.mapper.CompoundRequestMapper.mapRequest(CompoundRequestMapper.java:134)
>     at
> org.apache.wicket.request.cycle.RequestCycle.resolveRequestHandler(RequestCycle.java:182)
>     at
> org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:207)
>     at
> org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:281)
>     at
> org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)
>     at
> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:245)
>     at
> org.atmosphere.util.AtmosphereFilterChain.doFilter(AtmosphereFilterChain.java:154)
>     at
> org.atmosphere.util.AtmosphereFilterChain.invokeFilterChain(AtmosphereFilterChain.java:131)
>     at
> org.atmosphere.handler.ReflectorServletProcessor$FilterChainServletWrapper.service(ReflectorServletProcessor.java:310)
>     at
> org.atmosphere.handler.ReflectorServletProcessor.onRequest(ReflectorServletProcessor.java:168)
>     at
> org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:248)
>     at
> org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:166)
>     at
> org.atmosphere.container.TomcatWebSocketUtil.doService(TomcatWebSocketUtil.java:120)
>     at
> org.atmosphere.container.Tomcat7BIOSupportWithWebSocket.service(Tomcat7BIOSupportWithWebSocket.java:57)
>     at
> org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1222)
>     at
> org.atmosphere.websocket.WebSocketProcessor.dispatch(WebSocketProcessor.java:187)
>     at
> org.atmosphere.websocket.WebSocketProcessor.dispatch(WebSocketProcessor.java:116)
>     at
> org.atmosphere.container.TomcatWebSocketHandler.onOpen(TomcatWebSocketHandler.java:58)
>     at
> org.apache.catalina.websocket.StreamInbound.onUpgradeComplete(StreamInbound.java:228)
>     at
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:593)
>     at
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java: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.
>
>


-- 
Le bonheur n'est pas une destination, mais une façon de voyager.

Papa d'une petite Lou-Ann depuis le 30 juin.