Что вызывает ошибку Template.merge ()? Как этого избежать? - PullRequest
2 голосов
/ 16 сентября 2008

Наша команда постоянно сталкивается с проблемой шаблонов скорости. При рендеринге некоторые выдают RuntimeException с сообщением «Ошибка Template.merge () - Невозможно отобразить шаблон скорости,« /template.vm »». Мы не смогли воспроизвести проблему, и документации в Интернете недостаточно. Проблема не всегда воспроизводима - те же шаблоны, рендеринг которых иногда приводит к ошибке, также могут отображаться без проблем в другое время. Класс Template исходный код также мало чем поможет. Заранее спасибо.


Редактировать: Основываясь на ответе Натана Бубны, мне нужно уточнить, что мы используем Velocity версии 1.4.


Редактировать: поскольку было указано, что трассировка стека будет полезна, вот она:

2008-09-15 11: 07: 57,336 ОШИБКА скорость - Ошибка Template.merge (). Документ является нулевым, скорее всего из-за ошибки синтаксического анализа. 2008-09-15 11: 07: 57,336 ОШИБКА VelocityResult - Невозможно отобразить шаблон скорости, '/search/[template-redacted].vm' Исключение: ошибка Template.merge (). Документ является нулевым, скорее всего из-за ошибки синтаксического анализа. в org.apache.velocity.Template.merge (Template.java:277) в com.opensymphony.webwork.dispatcher.VelocityResult.doExecute (VelocityResult.java:91) в com.opensymphony.webwork.dispatcher.WebWorkResultSupport.execute (WebWorkResultSupport.java:109) в com.opensymphony.xwork.DefaultActionInvocation.executeResult (DefaultActionInvocation.java:258) в com.opensymphony.xwork.DefaultActionInvocation.invoke (DefaultActionInvocation.java:182) в com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35) в com.opensymphony.xwork.DefaultActionInvocation.invoke (DefaultActionInvocation.java:164) в com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35) в com.opensymphony.xwork.DefaultActionInvocation.invoke (DefaultActionInvocation.java:164) в com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35) в com.opensymphony.xwork.DefaultActionInvocation.invoke (DefaultActionInvocation.java:164) в com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35) в com.opensymphony.xwork.DefaultActionInvocation.invoke (DefaultActionInvocation.java:164) в com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35) в com.opensymphony.xwork.DefaultActionInvocation.invoke (DefaultActionInvocation.java:164) в com.opensymphony.xwork.interceptor.AroundInterceptor.intercept (AroundInterceptor.java:35) в com.opensymphony.xwork.DefaultActionInvocation.invoke (DefaultActionInvocation.java:164) в com.opensymphony.xwork.DefaultActionProxy.execute (DefaultActionProxy.java:116) на com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction (ServletDispatcher.java:272) на com.opensymphony.webwork.dispatcher.ServletDispatcher.service (ServletDispatcher.java:237) на javax.servlet.http.HttpServlet.service (HttpServlet.java:802) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:252) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173) в com.opensymphony.module.sitemesh.filter.PageFilter.doFilter (PageFilter.java:39) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:202) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173) в org.nanocontainer.nanowar.webwork2.PicoObjectFactoryFilter.doFilter (PicoObjectFactoryFilter.java:46) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:202) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173)в org.nanocontainer.nanowar.ServletRequestContainerFilter.doFilter (ServletRequestContainerFilter.java:44) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:202) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173) в com.bostoncapital.stuyvesant.RememberUserNameFilter.doFilter (RememberUserNameFilter.java:30) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:202) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:173) в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:214) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:178) в org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:482) в org.apache.catalina.valves.AccessLogValve.invoke (AccessLogValve.java:526) в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:126) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:105) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:107) в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:148) в org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:825) в org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.processConnection (Http11Protocol.java:738) в org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:526) в org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt (LeaderFollowerWorkerThread.java:80) в org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run (ThreadPool.java:684) at java.lang.Thread.run (неизвестный источник)

Ответы [ 5 ]

3 голосов
/ 18 октября 2008

Какую версию Velocity вы используете? Были некоторые условия гонки в старых версиях, которые вызвали это. Большинство было раздавлено в версии Velocity 1.5. Хотя я лично рекомендовал бы использовать Velocity 1.6-beta1. Он значительно улучшил производительность (память и скорость) и множество мелких исправлений ошибок, которые не смогли сделать это в 1.5.

Редактировать: Поскольку вы говорите, что используете 1.4, тогда да, я уверен, что это условие гонки, которое мы исправили. Пожалуйста, рассмотрите возможность обновления. 1.6, безусловно, ваш лучший выбор, так как в нем есть исправление вашей ошибки и улучшенная производительность. 1.6 финал должен выйти очень скоро.

1 голос
/ 28 октября 2008

Я сейчас работаю над той же ошибкой, на нашем сайте.

Похоже, это условие гонки: я могу воспроизводить его последовательно, используя несколько процессов, извлекающих одну и ту же страницу, но никогда не воспроизведу его, если я сериализую запросы.

Я использую скорость 1,5; Я пытался перейти на 1.6-beta1, но вижу другие ошибки.

РАЗРЕШЕНО : см. Комментарии ниже

0 голосов
/ 17 сентября 2008

Вам необходимо получить полную трассировку стека RuntimeException и его причины.

Пожалуйста, отредактируйте свой ответ, чтобы добавить эту информацию.

0 голосов
/ 23 сентября 2008

Я написал авторам кода по электронной почте, чтобы узнать, могут ли они дать некоторое представление. Я обязательно расскажу все, что узнал.

0 голосов
/ 17 сентября 2008

Поскольку комментарии в источнике уже заявляют, что это не должно происходить, я думаю, что это ошибка в программном обеспечении Template. Отправьте отчет об ошибке тому, кто его написал.

...