Glad you're OK. I would still suggest doing some of the changes I suggested. Or upgrade to T5.1 :-)
On Mon, Jul 6, 2009 at 2:46 PM, Aaron Kaminsky<aar...@adaptiveplanning.com> wrote: > Hi Howard, > > Thanks for the suggestion. In our case we may have been able to get by with > the workaround you suggested, but it turned out to be much simpler for us to > replace the calls to objectOutputStream.writeUTF() with calls to > objectOutputStream.writeUnshared(). > > In case anyone else runs into this, the following approach is working well > for us. > > We had to create our own RequestCycleFactoryImpl, RequestCycle and > CompressedDataEncoder classes to plumb in the writeUTF -> writeUnshared > change. That was done by adding a block to hivemodule.xml to replace the > implementation of service-id="tapestry.request.RequestCycleFactory". We were > worried about a performance hit with the change but it seems to be at least > as fast for us. This approach also removes any possibility of running into > this limitation in the future. > > Regards, > Aaron > > > -----Original Message----- > From: Howard Lewis Ship [mailto:hls...@gmail.com] > Sent: Thursday, July 02, 2009 4:27 PM > To: Tapestry users > Subject: Re: [Tapestry 4.1] UTFDataFormatException in > RequestCycle.encodeIdState > > That's an unexpected limitation! > In exceptional cases, you can revert to simpler methods; for instance, using > a simple <input type="text"/> rather than a TextField component, and handling > that part of the submission inside your listener method much like a > traditional servlet. > > As a stop-gap, you should give explicit jwcids to ALL of your components, as > use shorter names ... this will buy you a lot (if you see the repetition in > the generated element ids string at the root of your problem). This may be a > time to use less intuitive names (i.e., use abbreviations!). > > On Thu, Jul 2, 2009 at 3:31 PM, Aaron Kaminsky > <aar...@adaptiveplanning.com>wrote: > >> Hi all, >> >> I am having a problem with Tapestry 4.1.6. I have a form with many >> (>1000) components. I get an exception trying to render the page. It >> looks like the attempt in RequestCycle to call encodeIdState is >> hitting a 65k length limit in ObjectOutputStream.writeUTF. Has anyone >> else encountered this problem? I cannot restructure the page to >> reduce the number of components, so I need another way to get around >> this limit. I am thinking that I will need to override RequestCycle >> so I can call ObjectOutputStream.writeObject instead of .writeUTF when >> the string is long. Does anyone have a better solution? >> >> Exception details follow [[ >> Exception class: org.apache.hivemind.ApplicationRuntimeException >> Exception message: Unable to encode object >> ,service$0,page$0,component$0,container$0,session$0,sp$0,layout$1,link >> 1$ >> 0,shell$0,Insert$2633,Any$9,Insert_0$12,ie6$0,body$0,OnErrorHandler$0, >> If >> $6398,ConfirmFunctions$0,DownloadableJavaScript$5,BootstrapJavaScript$ >> 0, >> homeTab$0,tabAnnouncement$1,RenderBody$728,sheetsTab$0,tabOverview$1,g >> lo >> balsTab$0,tabGlobalsOverview$1,sharedFormulasTab$0,tabSharedFormulas$1 >> ,i >> mportTab$0,tabModelImport$1,exportTab$0,tabExportVersion$1,reportsTab$ >> 0, >> Else$637,tabReportMenu$1,masterVersionChangeForm$0,apstate$1,apVerSel$ >> 1, subMenuList$1,submenuItem$0,content$1,WarnOnUnsavedChan >> >> ... really long string truncated ... >> >> enu$0,APPageLink$0,Image_5$0,APPageLink_0$0,Image_6$0,APPageLink_1$0,I >> ma >> ge_7$0,APPageLink_2$0,Image_8$0,sampleBalanceSheetReport$1,Image_9$0,s >> am >> plePLReport$1,Image_100,addFavoriteSubmitForm$0:java.io.UTFDataFormatE >> xc eption. This is sometimes caused when classes being serialized to a >> stream dont implement java.io.Serializable. >> Stack Trace: { >> null >> } >> Exception class: java.io.UTFDataFormatException Exception message: >> null Stack Trace: { >> java.io.ObjectOutputStream$BlockDataOutputStream.writeUTF(Unknown >> Source) >> java.io.ObjectOutputStream$BlockDataOutputStream.writeUTF(Unknown >> Source) >> java.io.ObjectOutputStream.writeUTF(Unknown Source) >> org.apache.tapestry.util.io.CompressedDataEncoder.encodeStringCompress >> ed >> DataEncoder.java:55 >> org.apache.tapestry.engine.RequestCycle.encodeIdStateRequestCycle.java >> :6 >> 78 >> org.apache.tapestry.form.FormSupportImpl.renderFormSupportImpl.java:48 >> 2 >> org.apache.tapestry.form.Form.renderComponentForm.java:217 >> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 >> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefault >> Re >> sponseBuilder.java:187 >> org.apache.tapestry.AbstractComponent.renderBodyAbstractComponent.java >> :5 >> 38 >> org.apache.tapestry.components.RenderBody.renderComponentRenderBody.ja >> va >> :39 >> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 >> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefault >> Re >> sponseBuilder.java:187 >> org.apache.tapestry.AbstractComponent.renderBodyAbstractComponent.java >> :5 >> 38 >> org.apache.tapestry.components.RenderBody.renderComponentRenderBody.ja >> va >> :39 >> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 >> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefault >> Re >> sponseBuilder.java:187 >> org.apache.tapestry.AbstractComponent.renderBodyAbstractComponent.java >> :5 >> 38 >> org.apache.tapestry.html.Body.renderComponentBody.java:38 >> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 >> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefault >> Re >> sponseBuilder.java:187 >> org.apache.tapestry.AbstractComponent.renderBodyAbstractComponent.java >> :5 >> 38 >> org.apache.tapestry.html.Shell.renderComponentShell.java:125 >> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 >> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefault >> Re >> sponseBuilder.java:187 >> org.apache.tapestry.BaseComponent.renderComponentBaseComponent.java:10 >> 7 >> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 >> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefault >> Re >> sponseBuilder.java:187 >> org.apache.tapestry.BaseComponent.renderComponentBaseComponent.java:10 >> 7 >> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 >> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefault >> Re >> sponseBuilder.java:187 >> org.apache.tapestry.BaseComponent.renderComponentBaseComponent.java:10 >> 7 >> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724 >> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefault >> Re >> sponseBuilder.java:185 >> org.apache.tapestry.AbstractPage.renderPageAbstractPage.java:249 >> org.apache.tapestry.engine.RequestCycle.renderPageRequestCycle.java:40 >> 0 >> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderRespons >> eD >> efaultResponseBuilder.java:159 >> org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponseR >> es >> ponseRendererImpl.java:33 >> $ResponseRenderer_12220132922.renderResponse($ResponseRenderer_1222013 >> 29 >> 22.java) >> org.apache.tapestry.engine.ExternalService.serviceExternalService.java >> :1 >> 61 >> $IEngineService_122201329aa.service($IEngineService_122201329aa.java) >> org.apache.tapestry.services.impl.EngineServiceOuterProxy.serviceEngin >> eS >> erviceOuterProxy.java:72 >> org.apache.tapestry.engine.AbstractEngine.serviceAbstractEngine.java:2 >> 41 >> org.apache.tapestry.services.impl.InvokeEngineTerminator.serviceInvoke >> En >> gineTerminator.java:54 >> $WebRequestServicer_1222013297a.service($WebRequestServicer_1222013297a. >> java) >> com.adaptiveplanning.util.TokenizedRequestFilter.serviceTokenizedReque >> st >> Filter.java:65 >> $WebRequestServicerFilter_12220132978.service($WebRequestServicerFilte >> r_ >> 12220132978.java) >> $WebRequestServicer_1222013297c.service($WebRequestServicer_1222013297c. >> java) >> $WebRequestServicer_12220132974.service($WebRequestServicer_12220132974. >> java) >> org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.ser >> vi >> ceWebRequestServicerPipelineBridge.java:61 >> $ServletRequestServicer_1222013295a.service($ServletRequestServicer_12 >> 22 >> 013295a.java) >> org.apache.tapestry.request.DecodedRequestInjector.serviceDecodedReque >> st >> Injector.java:55 >> $ServletRequestServicerFilter_12220132956.service($ServletRequestServi >> ce >> rFilter_12220132956.java) >> $ServletRequestServicer_1222013295c.service($ServletRequestServicer_12 >> 22 >> 013295c.java) >> org.apache.tapestry.multipart.MultipartDecoderFilter.serviceMultipartD >> ec >> oderFilter.java:52 >> $ServletRequestServicerFilter_12220132954.service($ServletRequestServi >> ce >> rFilter_12220132954.java) >> $ServletRequestServicer_1222013295c.service($ServletRequestServicer_12 >> 22 >> 013295c.java) >> org.apache.tapestry.services.impl.SetupRequestEncoding.serviceSetupReq >> ue >> stEncoding.java:53 >> $ServletRequestServicerFilter_12220132958.service($ServletRequestServi >> ce >> rFilter_12220132958.java) >> $ServletRequestServicer_1222013295c.service($ServletRequestServicer_12 >> 22 >> 013295c.java) >> $ServletRequestServicer_1222013294e.service($ServletRequestServicer_12 >> 22 >> 013294e.java) >> org.apache.tapestry.ApplicationServlet.doServiceApplicationServlet.java: >> 126 >> org.apache.tapestry.ApplicationServlet.doGetApplicationServlet.java:10 >> 3 javax.servlet.http.HttpServlet.serviceHttpServlet.java:690 >> javax.servlet.http.HttpServlet.serviceHttpServlet.java:803 >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplic >> at >> ionFilterChain.java:290 >> org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFil >> te >> rChain.java:206 >> com.adaptiveplanning.system.ConnectionLeakDetector.doFilterConnectionL >> ea >> kDetector.java:58 >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplic >> at >> ionFilterChain.java:235 >> org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFil >> te >> rChain.java:206 >> com.adaptiveplanning.system.RequestMonitor$RequestHandler.performNativ >> eP >> rocessingRequestMonitor.java:197 >> com.adaptiveplanning.system.RequestMonitor$ForkedRequestHandler$1.call >> Re >> questMonitor.java:285 >> com.adaptiveplanning.system.RequestMonitor$ForkedRequestHandler$1.call >> Re >> questMonitor.java:283 >> java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) >> java.util.concurrent.FutureTask.run(Unknown Source) >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) >> java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) >> java.lang.Thread.run(Unknown Source) } ]] Request parameters are [[ ]] >> >> >> Thanks and Regards, >> Aaron Kaminsky >> > > > > -- > Howard M. Lewis Ship > > Creator of Apache Tapestry > Director of Open Source Technology at Formos > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > -- Howard M. Lewis Ship Creator of Apache Tapestry Director of Open Source Technology at Formos --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org