2011-11-29 10 views
7

में बाहरी वेब एप्लिकेशन के फ़ोल्डर से फ़ाइलों की सेवा करें मेरे पास जेटी सर्वर पर जावा वेब एप्लिकेशन (एक्लिप्स/ओएसजीआई) है। मैं वेब रूट के बाहर एक फ़ोल्डर से अपने वेब एप्लिकेशन में स्थैतिक फाइलों को सेवा करने में सक्षम होना चाहता हूं। मेरे वेब एप्लिकेशन में, मुझे अभी तक उस फाइल का फ़ाइल नाम नहीं पता है जिसे मैं सेवा देना चाहता हूं, इसलिए जब मैं अपना वेब एप्लिकेशन शुरू करता हूं तो मैं फ़ाइल नाम (और/या पथ) को वीएम पैरामीटर के रूप में लेना चाहता हूं। उदाहरण के लिए:जेट्टी

मेरे पास एक छवि है - myImg.jpg - मैंने सर्वर फ़ाइल सिस्टम पर एक फ़ोल्डर डाला है, उदाहरण के लिए रूट/छवियों/myImg.jpg। मैं इसे एक वीएम पैरामीटर के रूप में ले जाना चाहता हूं, उदा। "-DmyImg =/images/myImg.jpg /" ताकि मैं छवि प्राप्त कर सकूं और इसे अपने वेब पेज पर प्रदर्शित कर सकूं। मैं यह कैसे हासिल कर सकता हूं? क्या मैं एक नया सर्वलेट बनाने के बिना ऐसा कर सकता हूं?

किसी भी मदद के लिए अग्रिम धन्यवाद!

+0

मैं jetty.xml कॉन्फ़िग फ़ाइल में एक ContextHandler उपयोग करने के लिए कोशिश कर रहा हूँ, जिसमें मैं बात फ़ाइल सिस्टम पर वास्तविक फ़ोल्डर के लिए आधार संसाधन, लेकिन जब मैं संदर्भ के माध्यम से इसे एक्सेस करने का प्रयास करता हूं तो संसाधन "शून्य" होता है। – Farna

उत्तर

11

इसे हल किया गया!

यह वही है मैं अपने jetty.xml फ़ाइल को जोड़ा गया है:

<Set name="handler"> 
    <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection"> 
     <Set name="handlers"> 
      <Array type="org.eclipse.jetty.server.Handler"> 
       <Item> 
        <New class="org.eclipse.jetty.server.handler.ContextHandler"> 
         <Set name="contextPath">/myContextPath</Set> 
         <Set name="handler"> 
          <New class="org.eclipse.jetty.server.handler.ResourceHandler"> 
           <Set name="directoriesListed">false</Set> 
           <Set name="resourceBase">/actual/folder/on/file/system</Set> 
          </New> 
         </Set> 
        </New> 
       </Item> 
       [...other handlers...] 
      </Array> 
     </Set> 
    </New> 
</Set> 
3

@Farna: अपने जवाब में मुझे यह समझाया गया है कि कैसे आप वी एम पैरामीटर के रूप में फ़ाइल नाम से गुजर रहे हैं पा रहा हूँ। यह जो मैंने किया है।

मैंने जेटी webapps निर्देशिका में testparvez.xml फ़ाइल बनाई।

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.eclipse.org/configure.dtd"> 

<Configure class="org.eclipse.jetty.server.handler.ContextHandler"> 
    <Set name="contextPath">/testparvez</Set> 
    <Set name="resourceBase"><SystemProperty name="mydir"/></Set> 
    <Set name="handler"> 
    <New class="org.eclipse.jetty.server.handler.ResourceHandler"> 
     <Set name="welcomeFiles"> 
     <Array type="String"> 
      <Item><SystemProperty name="myfile"/></Item> 
     </Array> 
     </Set> 
     <Set name="cacheControl">max-age=3600,public</Set> 
    </New> 
    </Set> 
</Configure> 

तो मैं के रूप में

java -jar start.jar jetty.port=8082 -Dmydir=C:/test/javadoc/ -Dmyfile=index.html 

घाट शुरू और अंत में मैं यूआरएल से भी एक्सेस http://localhost:8082/testparvez/

संबंधित मुद्दे