2012-03-04 17 views
6

मैंने नेटबीन्स का उपयोग कर एक वेब एप्लिकेशन बनाया है। इससे पहले, जब मैं नेटबीन और टॉमकैट सर्वर (जो एक ज़िप था) के माध्यम से वेब ऐप चला रहा था, तो मेरी सभी बाहरी फाइलें (अपलोड की गई फाइलें और अन्य सहायक फाइलें जो मैं अपने ऐप के लिए उपयोग करता हूं) bin निर्देशिका में संग्रहीत हैं।टॉमकैट मेरी फाइलों को स्टोर करता है?

अब, मैं Windows इंस्टालर का उपयोग कर, क्योंकि मुझे पता है कि कैसे एक समर्पित सर्वर पर परियोजना को तैनात करना चाहता था एक अपाचे बिल्ला सेवा स्थापित करने की कोशिश की। मैंने टॉमकैट की तैनाती उपयोगिता का उपयोग करके युद्ध फ़ाइल सफलतापूर्वक तैनात की है। हालांकि, जब मैं अपाचे टॉमकैट विंडोज सेवा के माध्यम से प्रोजेक्ट चलाता हूं, तो यह bin डीआईआर में फ़ाइलों को सहेज नहीं रहा है और यह मेरी फ़ाइलों को नहीं पढ़ सकता है जिन्हें मैंने bin डीआईआर में चिपकाया था।

मुझे लगता है कि मुझे अपनी फाइलें कहां रखना चाहिए?

संपादित करें: बिल्ला सेवा निर्देशिका का अवलोकन करने पर, मुझे पता चला है कि यह जड़ में दुकान है। अगर मेरे पास 'E: \ Apache \ Services \ tomcat \' पर मेरा tomcat इंस्टॉल है, तो यह 'tomcat' निर्देशिका में संग्रहीत है।

उत्तर

4

जब आप अपाचे स्थापित करते हैं, परियोजना webapp फ़ोल्डर के अंदर होना चाहिए:

C:\Apache\tomcat\webapps 

मेरी परियोजना की तरह gaganisonline है तो निर्देशिका संरचना कुछ इस तरह है:

पथ: C:\Apache\tomcat\webapps\gaganisonline

      gaganisonline 
          |   | 
         WEB-INF  index.html 
          | 
       --------------------------- 
       |   |  |  | 
      web.xml src lib classes 
+0

हाँ, मुझे पता है कि मेरी परियोजना वेबएप निर्देशिका में है। हालांकि, मैं जानना चाहता था कि मेरा वेबपैप चल रहा है, जबकि टॉमकैट सर्वर फाइल लिख रहा है और फाइलों को संग्रहीत कर सकता है। फिर भी धन्यवाद। – braindead

+0

यहां रूट फ़ोल्डर आपके टोमकैट की जड़ है। आपके द्वारा देखे जाने वाले पहले पृष्ठ index.jsp उस फ़ोल्डर में रहते हैं। टोमकैट किस तरह की फाइलें लिख रहा है और स्टोर करने का अनुमान लगा रहा है? –

5

आखिरकार, यह आपका आवेदन करता है जो यह निर्धारित करता है कि फाइलें कहां संग्रहीत की जाती हैं।

यह की आवाज़ से, आपके आवेदन JVM, जो जब आप NetBeans के माध्यम से वेब सर्वर का शुभारंभ "बिन" निर्देशिका होने की मौजूदा निर्देशिका में फ़ाइलों को संग्रहीत करने है। यदि ऐसा है, तो आप उन्हें पाएंगे, जो भी वर्तमान निर्देशिका है जब टॉमकैट को विंडोज सेवा के रूप में लॉन्च किया जाता है।

सचमुच, मुझे लगता है कि आपको यह गलत मिला है। आपको फाइलें अपलोड करने के लिए एक सचेत निर्णय लेना चाहिए संग्रहीत होना चाहिए, और फिर यह सुनिश्चित करना कि अपलोड तंत्र आप उनका उपयोग कर रहे हैं।

जाहिर है, उन्हें मौजूदा निर्देशिका में डाल एक बुरा विचार है। वेब कंटेनर कैसे शुरू किया जाता है, इस पर निर्भर करता है कि आप उन्हें विभिन्न स्थानों पर संग्रहीत नहीं करना चाहते हैं। और जाहिर है कि "बिन" निर्देशिका एक अनुचित जगह है। (उपयोगकर्ता एक फ़ाइल जिसका नाम लिपियों कि "बिन" में रहते हैं में से एक से मेल खाता है अपलोड करने का प्रयास करता है, तो क्या होता है?)


तो जहां आप फ़ाइलों डाल किया जाना चाहिए?

मेरी राय में, आपके पास तीन विकल्प मिल गया है:

  • work निर्देशिका की एक उपनिर्देशिका ... जो वह जगह है जहाँ बिलाव पारंपरिक ऐसे संकलित JSPs के रूप में अस्थायी फ़ाइलों डालता है।

  • बिलाव स्थापना निर्देशिका के एक कस्टम उपनिर्देशिका में

  • फाइल सिस्टम में कहीं और एक अलग निर्देशिका में

आप, webapp निर्देशिका में तो गिर नहीं किया जाना चाहिए क्योंकि फ़ाइलें आमतौर पर उड़ा रहे हैं जब webapp पुन: वितरित किया जाता है, और एक बड़ा खतरा है कि अपलोड की गई फ़ाइलों अपने webapp के साथ हस्तक्षेप होगा क्योंकि।

हस्तक्षेप के जोखिम के कारण आपको उन्हें बिन या लॉग या lib या config निर्देशिका में छोड़ना नहीं चाहिए ... और क्योंकि वे केवल तार्किक स्थान नहीं हैं।


आप बिल्ला स्थापना निर्देशिका की जड़ के सापेक्ष फ़ाइलों लिखना चाहते हैं, तो आप पता कर सकते हैं कि क्या System.getProperty("catalina.base") फोन करके है।

लेकिन आप जो भी करते हैं, आपको यह सुनिश्चित करने की ज़रूरत है कि कोई उपयोगकर्ता गलती से या जानबूझकर गलत जगह पर फ़ाइलों को अपलोड नहीं कर सकता; उदाहरण के लिए एक पूर्ण पथनाम, या एक पथनाम जो आपके अपलोड क्षेत्र से बचने के लिए "../../...." का उपयोग करके प्रदान करता है।

+0

"नाम" के मामले में 'बिन' में रहने वाली स्क्रिप्ट्स में से एक से मेल खाता है, इसलिए मैं इसके लिए थोड़ा सुरक्षित हूं क्योंकि मैं इसे 'bin' के भीतर एक निर्देशिका में संग्रहीत करता हूं। किसी भी तरह, मैं बिन से अलग दूसरी निर्देशिका पर इसे संग्रहीत करने पर आपकी सलाह लेना चाहता हूं। मेरी समस्या अब यह कैसे है? मुझे 'सी: \ अपाचे \ tomcat \ file.txt' जैसे सटीक फ़ाइल पथों का उपयोग करने का शौक नहीं है। मैं आमतौर पर सापेक्ष पथ का उपयोग करता हूं। क्या इस पर कोई कामकाज है या मुझे सटीक फ़ाइल पथ का उपयोग करना चाहिए? अगर मैं अपने वेबैप से फ़ाइलों तक पहुंचता हूं तो मेरी रूट निर्देशिका क्या है? – braindead

+0

अद्यतन उत्तर देखें ... –

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