2010-01-06 20 views
5

पर वेग फ्रेमवर्क मैं 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());  
} 
} 

एक ही कार्यक्रम एक सामान्य ग्रहण परियोजना पर बिल्कुल ठीक चलाता है मैं निम्न अपवाद मिलता है। क्या समस्या हो सकती है?

उत्तर

9

केवल ServletLogChute वर्ग होने लगता है जिसके लिए ServletContext की आवश्यकता होती है, वेग स्वयं ही सर्वलेट वातावरण से पूरी तरह से स्टैंडअलोन काम कर सकता है।

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

... या check here if you have specific logging requirements:

जब से तुम स्पष्ट रूप से एक servelt लॉग नहीं है, निम्नलिखित जोड़ने का प्रयास करें इससे पहले कि आप ve.init() कहते हैं।

2

इस दुनिया और कहानी का अंत नहीं हो सकता है, लेकिन वहाँ GAE संगत सॉफ्टवेयर की एक सूची है:

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

और मैं इसे में वेग नहीं मिला। यह संभव है कि लोग सिर्फ सूची में परीक्षण और इसे शामिल करना भूल जाएं, लेकिन यह भी संभव है कि वेग कुछ एपीआई लाए जो जीएई के साथ अच्छी तरह से खेल नहीं सके।

+2

धन्यवाद कार्ल..उन्होंने अभी इसे याद किया था ... यह ऐप इंजन – Aadith

+0

पर बिल्कुल ठीक काम कर रहा है। क्या आपको लॉगिंग समस्या को हल करना पड़ा था जिसके बारे में मैंने पढ़ा था, या क्या आपने इसे काम करने के लिए प्रबंधित किया था? –

+0

दरअसल, मुझे यह जानने में दिलचस्पी होगी कि समाधान संदर्भ के लिए क्या था। –

2

वेग को निश्चित रूप से जीएई/जे पर चलाने के लिए बनाया जा सकता है।

फ्रेमवर्क जो Velocity के टेम्पलेट इंजन के रूप में उपयोग कर रहा है, GAE/J पर किसी समस्या के बिना काम करता है।

जीएई/जे एक बाधा पर्यावरण है, लेकिन इसके बावजूद यह सामान्य रूप से different configuration की आवश्यकता है, लेकिन फिर भी, यह काम करता है।