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

Reply via email to