Hello Francisco, I don't think the issue is exactly the same, as I am always getting "interface" URLs, the "good" ones... but it might be related, as I am also having component + resource listener on the same page (though I have no header contributor).
Regards, Daniel. 2009/4/23 francisco treacy <[email protected]>: > I don't think it's the same issue, but I had some trouble with loading > a Flash stream and IResourceListener > > https://issues.apache.org/jira/browse/WICKET-2204 > > Francisco > > 2009/4/23 Daniel Fernandez <[email protected]>: >> By the way, in case this gives you more information, my "DataPanel" is >> very similar to the "OpenFlashChart" Panel class defined in >> http://cwiki.apache.org/WICKET/open-flash-chart-and-wicket.html, as in >> fact my flash object is Open Flash Chart (I am loading many charts in >> the same page in an asynchronous way). >> >> Regards, >> Daniel. >> >> >> 2009/4/23 Daniel Fernandez <[email protected]>: >>> Thank you again for your time, Igor. >>> >>> Your explanation makes sense by itself, but it is not my problem, I'm >>> afraid... this thing can happen to me even the first time I load the >>> page, without reloading at all. >>> >>> I investigated deeper and I realised that what was happening was that, >>> when the server received the request from the flash object for >>> retrieving the data (a request on the IResourceListener interface of >>> the DataPanel)... the onBeforeRender() method of the outer container >>> was being executed some times (and this onBeforeRender created a new >>> LoadingPanel, which is what caused the exception)... and this makes >>> no sense to me. >>> >>> Let me put it clear, once loaded by the DataPanel onto the browser, >>> the flash object requests: >>> >>> http://myserver/MyPage/wicket:interface/:5:outerpanel:panelloader:datapanel::IResourceListener:: >>> >>> Which means that it is calling the datapanel which created the flash >>> object itself as a resource listener, to simply obtain a resource >>> declared there (a WebResource object) containing a String of data in >>> JSON format. >>> >>> In my understanding this request, which is executed via the >>> XmlHttpRequest object in the browser, should never provoke >>> "outerpanel"'s onBeforeRender() method to execute... but it does! I >>> put a log sentence in this onBeforeRender method which outputs >>> "RequestCycle.get().getRequest().getURL()" and I receive an URL like >>> the one above... but only sometimes, only when it fails. >>> >>> Is this possible, is there something I am not understanding about the >>> way this URL should be served? >>> >>> Thanks again, >>> Daniel. >>> >>> >>> >>> >>> 2009/4/22 Igor Vaynberg <[email protected]>: >>>> 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] >>>> >>>> >>> >> >> --------------------------------------------------------------------- >> 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]
