скоростная платформа на механизме приложения Google

я пытаюсь использовать скоростную платформу на механизме приложения Google. я записал небольшую программу с основным методом и попытался выполнить его локально. я получаю следующее исключение:

Exception in thread "main" org.apache.velocity.exception.VelocityException: Failed to initialize an instance of org.apache.velocity.runtime.log.ServletLogChute with the current runtime configuration.
  at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:206)
  at org.apache.velocity.runtime.log.LogManager.updateLog(LogManager.java:255)
  at org.apache.velocity.runtime.RuntimeInstance.initializeLog(RuntimeInstance.java:795)
  at org.apache.velocity.runtime.RuntimeInstance.init(RuntimeInstance.java:250)
  at org.apache.velocity.app.VelocityEngine.init(VelocityEngine.java:107)
  at Main.main(Main.java:10)
Caused by: java.lang.UnsupportedOperationException: Could not retrieve ServletContext from application attributes
  at org.apache.velocity.runtime.log.ServletLogChute.init(ServletLogChute.java:73)
  at org.apache.velocity.runtime.log.LogManager.createLogChute(LogManager.java:157)
  ... 5 more

Вот моя программа:

import java.io.StringWriter;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;

public class Main {
 public static void main(String[] args) throws Exception{
        /*  first, get and initialize an engine  */
        VelocityEngine ve = new VelocityEngine();
        ve.init();
        /*  next, get the Template  */
        Template t = ve.getTemplate( "helloworld.vm" );
        /*  create a context and add data */
        VelocityContext context = new VelocityContext();
        context.put("name", "World");
        /* now render the template into a StringWriter */
        StringWriter writer = new StringWriter();
        t.merge( context, writer );
        /* show the World */
        System.out.println( writer.toString() );    
 }
}

те же прогоны программы, превосходные на нормальном проекте затмения. какова могла быть проблема?

5
задан Aadith Ramia 17 September 2011 в 00:02
поделиться

3 ответа

Похоже, что только класс ServletLogChute, который требует ServletContext, сам по себе Velocity может работать полностью автономно от среды сервлета.

Так как у вас очевидно нет журнала сервлетов, попробуйте добавить следующее перед вызовом ve.init():

ve.setProperty("runtime.log.logsystem.class", "org.apache.velocity.runtime.log.NullLogChute");

... или , проверьте здесь, есть ли у вас особые требования к журналу .

9
ответ дан 18 December 2019 в 14:46
поделиться

Может быть, это и не конец света и истории, но есть список программ, совместимых с GAE:

http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine

и я не нашел в нем Velocity. Возможно, люди просто забыли протестировать и включить его в список, но, возможно, Velocity привносит с собой какой-то API, который не очень хорошо работает с GAE.

2
ответ дан 18 December 2019 в 14:46
поделиться

Velocity можно окончательно заставить работать на GAE / J.

Apache Click Framework, использующий Velocity в качестве механизма шаблонов, без проблем работает с GAE / J.

Конечно, требуется другая конфигурация , чем обычно, поскольку GAE / J является средой ограничений, но, тем не менее, она работает.

2
ответ дан 18 December 2019 в 14:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: