2009-02-23 10 views
5

द्वारा फ़ाइल एक्सेस की अनुमति देने के लिए catalina.policy सेट करना हमारे पास बी-पेड़ के आधार पर स्थानीय रूप से विकसित ट्रिपल स्टोर है जिसे मैं कई सर्वलेट अनुप्रयोगों में लगातार स्टोरेज के लिए उपयोग करना चाहता हूं। Servlet .war में b-tree अनुक्रमणिका फ़ाइलों को एम्बेड करने के बजाय, मैं उन्हें किसी ज्ञात स्थान पर संग्रहीत करना चाहता हूं और servlets उन्हें सीधे एक्सेस कर सकते हैं। यह जेटी में सभी काम करता है, लेकिन जब मैं इसे टोमकैट में कोशिश करता हूं तो सुरक्षा अपवाद उठाता है। मुझे बताया गया है कि टोमकैट के सुरक्षा मॉडल को सर्वलेट के लिए निर्देशिका पेड़ के बाहर फ़ाइलों तक पहुंचने के लिए स्पष्ट अनुमतियों की आवश्यकता होती है जहां .war अनपॅक किया गया है। मैं बिलाव (संस्करण 5.5) प्रलेखन सही ढंग से समझ में आ गया है, catalina.policy को जोड़ा गया निम्न निर्देशिकाओं जहां सूचकांक फ़ाइलें हैं का उपयोग करने की अनुमति चाहिए सर्वलेट:servlets

grant codeBase "jar:file:${catalina.home}/webapps/mytestapp/-" 
{ 
    permission java.io.FilePermission "/var/data/tdb/-", "read, write, delete"; 
} 

हालांकि, मैं अभी भी एक सुरक्षा अपवाद प्राप्त करें:

java.io.FileNotFoundException: 
        /var/data/tdb/kb/node2id.idn (Permission denied) 
    at java.io.RandomAccessFile.open(Native Method) 
    ... 

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

+0

क्या आप पोस्ट कर सकते हैं कि आप फ़ाइल को कैसे खोल रहे हैं/आप ऐसा करने के लिए किस कोड का उपयोग कर रहे हैं? –

+0

क्या आप सेलिनक्स चला रहे हैं? यदि ऐसा है, तो आपको सेलिनक्स को कॉन्फ़िगर करने की आवश्यकता हो सकती है ताकि वह जावा द्वारा उस निर्देशिका तक पहुंच की अनुमति दे सके। – Eddie

उत्तर

4
java.io.FileNotFoundException: 
       /var/data/tdb/kb/node2id.idn (Permission denied) 

यह आपका ओएस जावा सुरक्षा नहीं, एक्सेस अस्वीकार कर रहा है। यदि यह जावा सुरक्षा थी तो आपको AccessControlException (या SecurityException का कुछ अन्य रूप) प्राप्त होगा। जिस उपयोगकर्ता को आप टॉमकैट प्रक्रिया चला रहे हैं, संभवतः उस फ़ाइल तक पहुंच नहीं है।

+0

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

+1

टॉम सही था, यह ओएस फ़ाइल अनुमति समस्या थी, टॉमकैट नहीं। मुझे इसके नीचे बहुत कुछ नहीं मिला है, लेकिन अस्थायी रूप से परीक्षण सर्वर पर फ़ाइल अनुमतियों को एक + rw पर अपवाद हटा देता है। अब मुझे बस एक और अधिक प्रतिबंधक सेटिंग का पता लगाना है जो स्टोर को खुले नहीं छोड़ता है! –

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