browsers are asynchronous, so you might have a race codition. eg
browser requests the data url and you press the refresh button, so now
there are two urls in the queue: the data and the page. if page is
processed first then the data url will fail because when the page is
first constructed you have a loading panel in there. makes sense?

take a look at wicket's ajaxlazyloadingpanel, it might have a way to
handle this.

-igor

On Wed, Apr 22, 2009 at 10:23 AM, Daniel Fernandez
<[email protected]> wrote:
> Thanks for your answer, Igor.
>
> Now I know what is happening more in detail. It is not easy to
> explain, sorry for the long text:
>
> I have:
>
>  - DataPanel: a panel with data I want to show.
>
>  - LoadingPanel: a panel which just shows a "loading..." image.
>
>  - PanelLoader: a Panel with an inner panel called "content", which
> is loaded initially with LoadingPanel, and sets an AjaxTimerBehavior
> which polls the server until the data is ready, and then creates the
> DataPanel, replaces the inner "content" with this DataPanel, and stops
> the timer behavior.
>
>
> All this works perfectly until I use a subclass of DataPanel called
> FlashDataPanel which, for showing data, shows a flash object which in
> turn has to make a request from the browser to get its data. I offer
> this data to the flash object as a resource, by making this subclass
> of DataPanel implement IResourceListener, and implementing its
> "onResourceRequested" method. The URL I add to the flash object is
> obtained like:
>
>        CharSequence dataPath =
> RequestCycle.get().urlFor(FlashDataContainer.this,
> IResourceListener.INTERFACE);
>        return RequestUtils.toAbsolutePath( dataPath.toString() );
>
> The problems seems to be that *sometimes, and only sometimes* (maybe
> once each 50 correct loads or so), the "onResourceRequested" method
> gets called on the LoadingPanel instead of the DataPanel... which is
> something strange to my eyes (unless there is something I don't
> understand, of course). The URL is created passing the
> FlashDataContainer.this object, so I cannot understand how it gets
> called on a LoadingPanel, which of course does not implement
> IResourceListener, and thus provokes this exception.
>
> Regards,
> Daniel.
>
>
>
> 2009/4/22 Igor Vaynberg <[email protected]>:
>> why dont you set a breakpoint for classcastexception and see what it
>> is trying to cast to what.
>>
>> -igor
>>
>> On Wed, Apr 22, 2009 at 3:52 AM, Daniel Fernandez <[email protected]> 
>> wrote:
>>> Hello,
>>>
>>> I have a page which makes quite a heavy use of an
>>> AbstractAjaxTimerBehavior for retrieving the content of some Panels
>>> (and stops itself after the content is ready, like a sort of
>>> "polling") and I am getting a very strange exception which only seems
>>> to appear randomly:
>>>
>>>
>>> -------------
>>>
>>> 2009-04-22 12:21:30,592 ERROR [RequestCycle] (RequestCycle.java:1463)
>>> - Method onResourceRequested of interface
>>> org.apache.wicket.IResourceListener targeted at component
>>> [MarkupContainer [Component id = content]] threw an exception
>>> org.apache.wicket.WicketRuntimeException: Method onResourceRequested
>>> of interface org.apache.wicket.IResourceListener targeted at component
>>> [MarkupContainer [Component id = content]] threw an exception
>>>        at 
>>> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:199)
>>>        at 
>>> org.apache.wicket.request.target.component.BookmarkableListenerInterfaceRequestTarget.processEvents(BookmarkableListenerInterfaceRequestTarget.java:163)
>>>        at 
>>> org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
>>>        at 
>>> org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1192)
>>>        at org.apache.wicket.RequestCycle.step(RequestCycle.java:1271)
>>>        at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1370)
>>>        at org.apache.wicket.RequestCycle.request(RequestCycle.java:501)
>>>        at 
>>> org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:455)
>>>        at 
>>> org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:288)
>>>        at 
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>>>        at 
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>>        at 
>>> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
>>>        at 
>>> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>>>        at 
>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>>>        at 
>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>>        at 
>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>>>        at 
>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
>>>        at 
>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>>>        at 
>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>>>        at 
>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
>>>        at 
>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
>>>        at 
>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
>>>        at 
>>> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>>>        at 
>>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>>>        at 
>>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>>>        at 
>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
>>>        at java.lang.Thread.run(Thread.java:619)
>>> Caused by: java.lang.IllegalArgumentException:
>>> java.lang.classcastexcept...@42ae5f
>>>        at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)
>>>        at 
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAc1cessorImpl.java:25)
>>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>>        at 
>>> org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:182)
>>>        ... 26 more
>>>
>>>
>>> -------------
>>>
>>>
>>> The problem is this I don't get more information than that, and I only
>>> get the exception once each, say... 50 times I reload the page (I mean
>>> "browser reload" = new page object). The other 49 times everything
>>> works fine. It's quite random...
>>>
>>> Any clues?
>>>
>>>
>>> Regards,
>>> Daniel.
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to