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,link1$
> 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,glo
> 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,Ima
> ge_7$0,APPageLink_2$0,Image_8$0,sampleBalanceSheetReport$1,Image_9$0,sam
> plePLReport$1,Image_100,addFavoriteSubmitForm$0:java.io.UTFDataFormatExc
> 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.encodeStringCompressed
> DataEncoder.java:55
> org.apache.tapestry.engine.RequestCycle.encodeIdStateRequestCycle.java:6
> 78
> org.apache.tapestry.form.FormSupportImpl.renderFormSupportImpl.java:482
> org.apache.tapestry.form.Form.renderComponentForm.java:217
> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724
> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe
> sponseBuilder.java:187
> org.apache.tapestry.AbstractComponent.renderBodyAbstractComponent.java:5
> 38
> org.apache.tapestry.components.RenderBody.renderComponentRenderBody.java
> :39
> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724
> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe
> sponseBuilder.java:187
> org.apache.tapestry.AbstractComponent.renderBodyAbstractComponent.java:5
> 38
> org.apache.tapestry.components.RenderBody.renderComponentRenderBody.java
> :39
> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724
> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe
> 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.renderDefaultRe
> 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.renderDefaultRe
> sponseBuilder.java:187
> org.apache.tapestry.BaseComponent.renderComponentBaseComponent.java:107
> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724
> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe
> sponseBuilder.java:187
> org.apache.tapestry.BaseComponent.renderComponentBaseComponent.java:107
> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724
> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe
> sponseBuilder.java:187
> org.apache.tapestry.BaseComponent.renderComponentBaseComponent.java:107
> org.apache.tapestry.AbstractComponent.renderAbstractComponent.java:724
> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderDefaultRe
> sponseBuilder.java:185
> org.apache.tapestry.AbstractPage.renderPageAbstractPage.java:249
> org.apache.tapestry.engine.RequestCycle.renderPageRequestCycle.java:400
> org.apache.tapestry.services.impl.DefaultResponseBuilder.renderResponseD
> efaultResponseBuilder.java:159
> org.apache.tapestry.services.impl.ResponseRendererImpl.renderResponseRes
> ponseRendererImpl.java:33
> $ResponseRenderer_12220132922.renderResponse($ResponseRenderer_122201329
> 22.java)
> org.apache.tapestry.engine.ExternalService.serviceExternalService.java:1
> 61
> $IEngineService_122201329aa.service($IEngineService_122201329aa.java)
> org.apache.tapestry.services.impl.EngineServiceOuterProxy.serviceEngineS
> erviceOuterProxy.java:72
> org.apache.tapestry.engine.AbstractEngine.serviceAbstractEngine.java:241
> org.apache.tapestry.services.impl.InvokeEngineTerminator.serviceInvokeEn
> gineTerminator.java:54
> $WebRequestServicer_1222013297a.service($WebRequestServicer_1222013297a.
> java)
> com.adaptiveplanning.util.TokenizedRequestFilter.serviceTokenizedRequest
> Filter.java:65
> $WebRequestServicerFilter_12220132978.service($WebRequestServicerFilter_
> 12220132978.java)
> $WebRequestServicer_1222013297c.service($WebRequestServicer_1222013297c.
> java)
> $WebRequestServicer_12220132974.service($WebRequestServicer_12220132974.
> java)
> org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.servi
> ceWebRequestServicerPipelineBridge.java:61
> $ServletRequestServicer_1222013295a.service($ServletRequestServicer_1222
> 013295a.java)
> org.apache.tapestry.request.DecodedRequestInjector.serviceDecodedRequest
> Injector.java:55
> $ServletRequestServicerFilter_12220132956.service($ServletRequestService
> rFilter_12220132956.java)
> $ServletRequestServicer_1222013295c.service($ServletRequestServicer_1222
> 013295c.java)
> org.apache.tapestry.multipart.MultipartDecoderFilter.serviceMultipartDec
> oderFilter.java:52
> $ServletRequestServicerFilter_12220132954.service($ServletRequestService
> rFilter_12220132954.java)
> $ServletRequestServicer_1222013295c.service($ServletRequestServicer_1222
> 013295c.java)
> org.apache.tapestry.services.impl.SetupRequestEncoding.serviceSetupReque
> stEncoding.java:53
> $ServletRequestServicerFilter_12220132958.service($ServletRequestService
> rFilter_12220132958.java)
> $ServletRequestServicer_1222013295c.service($ServletRequestServicer_1222
> 013295c.java)
> $ServletRequestServicer_1222013294e.service($ServletRequestServicer_1222
> 013294e.java)
> org.apache.tapestry.ApplicationServlet.doServiceApplicationServlet.java:
> 126
> org.apache.tapestry.ApplicationServlet.doGetApplicationServlet.java:103
> javax.servlet.http.HttpServlet.serviceHttpServlet.java:690
> javax.servlet.http.HttpServlet.serviceHttpServlet.java:803
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicat
> ionFilterChain.java:290
> org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilte
> rChain.java:206
> com.adaptiveplanning.system.ConnectionLeakDetector.doFilterConnectionLea
> kDetector.java:58
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilterApplicat
> ionFilterChain.java:235
> org.apache.catalina.core.ApplicationFilterChain.doFilterApplicationFilte
> rChain.java:206
> com.adaptiveplanning.system.RequestMonitor$RequestHandler.performNativeP
> rocessingRequestMonitor.java:197
> com.adaptiveplanning.system.RequestMonitor$ForkedRequestHandler$1.callRe
> questMonitor.java:285
> com.adaptiveplanning.system.RequestMonitor$ForkedRequestHandler$1.callRe
> 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

Reply via email to