Che cosa causa un errore di velocità Template.merge()?Come si può evitarlo?

StackOverflow https://stackoverflow.com/questions/74818

  •  09-06-2019
  •  | 
  •  

Domanda

Il nostro team ha riscontrato un problema ricorrente con i modelli di velocità.Durante il rendering, alcuni lanciano una RuntimeException con il messaggio "Template.merge() fallito - Impossibile eseguire il rendering del modello Velocity, '/template.vm'".Non siamo stati in grado di riprodurre il problema e la documentazione sul web è piuttosto insufficiente.Il problema non è riproducibile in modo coerente: gli stessi modelli il cui rendering a volte causa l'errore riescono a essere visualizzati senza problemi anche altre volte.La classe Modello codice sorgente è anche di scarso aiuto.Grazie in anticipo.


Modificare:Sulla base della risposta di Nathan Bubna devo chiarire che stiamo utilizzando Velocity versione 1.4.


Modificare:Poiché è stato sottolineato che l'analisi dello stack sarebbe utile, eccola qui:

2008-09-15 11:07:57,336 ERRORE velocità - Errore Template.merge().Il documento è nullo, molto probabilmente a causa di un errore di analisi.2008-09-15 11: 07: 57.336 Errore VelocityResult-Impossibile rendere il modello di velocità, '/Search/tintemplate-Dacted lasting.vm' java.lang.exception:Errore Template.merge().Il documento è nullo, molto probabilmente a causa di un errore di analisi.At org.apache.velocity.template.merge (template.java:277) su com.opensymphony.webwork.dispatcher.velocityresult.doexecute (velocitysult.java:91) su com.opensymphony.webwork.dispatch.WeBworksUrsulSUTSUTSUTSUTER (WebworkSUTSUTSUTSUTERSEPTERSUTSUPTERS Supports. .java: 109) at com.opensymphony.xwork.DefaultActionInvocation.executeResult (defaultActionAinvocation.java:258) su com.opensymphony.xwork.DefaultActionInvocation.Invoke (defaultActionInvocation.java:182) at com.opensyphony.xwork.arouTercetor. intercetta (intorno all'interceptor.java:35) all'indirizzo com.opensymphony.xwork.DefaultActionInvocation.Invoke (defaultActionInvocation.java:164) all'indirizzo com.opensymphony.xwork.interceptor.AroundInterceptor.Intercept (AroundInterceptor.java:35) a com.opensymphony.xwony .EfaultActionInvocation.Invoke (defaultActionInvocation.java:164) su com.opensymphony.xwork.Interceptor.AroundInterceptor.Intercept (AroundInterceptor.java:35) a com.opensymphony.xwork.DefaultActionInvocation.InVoke (defaultInvocation.java:164 a Com. OpenSymphony.xwork.Interceptor.AroundInterceptor.Intercept (AroundInterceptor.java:35) su com.opensymphony.xwork.DefaultActionInvocation.Invoke (defaultActionInvocation.java:164) all'indirizzo com.opensymphony.xwork.interptor.Aroundceptor.Intercept (AcrossTenceTerstor.java: Java:164) su com.opensymphony.xwork.Interceptor.Aroundceptor.Intercept (AcrossTceptor.Incetor 35) su com.opensymphony.xwork.DefaultActionInvocation.Invoke (defaultActionInvocation.java:164) su com.opensymphony.xwork.Interceptor.AroundInterceptor.Intercept (AllroundInterceptor.java:35) su com.opensymphony.xwork.DefaultActionInvocation.InValoction (DefelactionInction (DefelactionInction (DefelactionInction (DefelactionInction (DefelactionInction (DefelactionInction (deadectaction. .java: 164) su com.opensymphony.xwork.DefaultActionProxy.Execute (defaultActionProxy.java:116) all'indirizzo com.opensymphony.webwork.dispatcher.servletdispatcher.serviceaction (servletletdispatcher.java:272) a com.opensymony.dyony.donchony. Servletdispatcher.service (servletdispatcher.java:237) su javax.servlet.http.httpservlet.service (httpservlet.java:802) su org.apache.catalina.core.applicationfilter.indletCaldofilter (Applicazione.java:252) .catalina.core.ApplicationFilterChain.Dofilter (ApplicationFilterChain.java:173) su com.opensymphony.module.sitemesh.filter.pagefilter.dofilter (PageFilter.java:3An) a org.apache.catalina.Core.AppicationFilter.InternAdAdter (PageFilter.Java:3An) a org.apache.catalina.Core.AppicationFilter.InternAdAdter (PageFilter.Java:3An) .java: 202) su org.apache.catalina.core.applicationFilterChain.dofilter (ApplicationFilterChain.java:173) su org.nanocontainer.nanowar.webwork2.PipoObjectFactoryFilter.Dofilter (picoobjectFactoryFilter:46 a Orgwork.Pebwork2.PipoObjectFactoryFilter.Dofilter (picoobjectFactoryFilter:46) a Org. core.applicationfilterchain.internaldofilter (ApplicationFilterChain.java:202) su org.apache.catalina.core.applicationFilterChain.dofilter (ApplicationFilterChain.java:173) su Org.NanContainer.Nanowar.ServletletTeleTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeTeleTeTreFiLter. Ava: 44) all'organizzazione .apache.catalina.core.applicationFilterChain.internalDofilter (ApplicationFilterChain.java:202) su org.apache.catalina.core.applicationFilterChain.dofilter (ApplicationFilterChain.java:173) a com.bostoncapital.stuyvenMafilter. Java : 30) su org.apache.catalina.core.applicationfilterchain.internaldofilter (ApplicationFilterChain.java:202) su org.apache.catalina.core.applicationFilterChain.Dofilter (ApplicationFilterChain.java:173) a org.apache.catalina.Core. Standardwrappervalve.invoke (standardwrappervalve.java:214) su org.apache.catalina.core.standardContextValve.Invoke (standardContextValve.java:178) su org.apache.catalina.authenticator.authenticatorbase.invoke (AUTHENTHATOR. .apache.catalina.valves.accessLogvalve.invoke (AccessLogValve.java:526) su org.apache.catalina.core.standardHostValve.invoke (standardHostValve.java:126) At org.apache.catalina.valves.errorRortVoke (errorrOrtVetvalve .java: 105) su org.apache.catalina.core.standardenginevalve.invoke (standardenginevalve.java:107) su org.apache.catalina.connector.coyoteadapter.service (Coyoteadapter.java:148) a org.apache.Coyote. http11.Http11Processor.process(Http11Processor.java:825) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:738) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint. Java: 526) su org.apache.tomcat.util.net.leaderfollowerworkerthread.runit (LeaderFollowerworkerThread.java:80) su org.apache.tomcat.util.Threads.ThreadPool $ ControlRunnable.Run (ThreadPool.java:684) .lang.Thread.run (fonte sconosciuta)

È stato utile?

Soluzione

Che versione di Velocity stai utilizzando?C'erano alcune condizioni di gara nelle vecchie versioni che causavano questo.La maggior parte è stata schiacciata nella versione Velocity 1.5.Anche se personalmente consiglierei di utilizzare Velocity 1.6-beta1.Ha notevolmente migliorato le prestazioni (memoria e velocità) e molte correzioni di bug minori che non sono stati inclusi nella versione 1.5.

Modificare:Dato che dici di utilizzare la versione 1.4, sì, sono sicuro che questa è la condizione di gara che abbiamo corretto.Si prega di considerare l'aggiornamento.La versione 1.6 è sicuramente la soluzione migliore, poiché contiene la correzione del bug e prestazioni migliorate.La versione 1.6 finale dovrebbe uscire molto presto.

Altri suggerimenti

Sto lavorando allo stesso bug proprio adesso, sul nostro sito web.

Sembra essere una condizione di gara:Posso riprodurlo in modo coerente utilizzando più processi che recuperano la stessa pagina, ma non riprodurlo mai se serializzo le richieste.

Sto usando la velocità-1.5;Ho provato a migrare alla versione 1.6-beta1 ma vedo altri errori.

RISOLTO:vedere i commenti qui sotto

Poiché i commenti nella fonte affermano già che ciò non dovrebbe accadere, penso che si tratti di un bug nel software Template.Invia una segnalazione di bug a chi l'ha scritta.

È necessario ottenere l'analisi dello stack completa di RuntimeException e delle relative cause.

Modifica la tua risposta per aggiungere tali informazioni.

Ho inviato un'e-mail agli autori del codice per vedere se possono fornire alcune informazioni.Mi assicurerò di condividere tutto ciò che ho imparato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top