2014-08-28 5 views
5

मैं बिलाव 8 कि परंपरागत रूप से WebSphere के अधीन ही कार्य के तहत एक जावा वेब परियोजना चलाने का प्रयास कर रहा हूँ देता है। एक सर्वलेट निम्नलिखित कॉल करता है:getServletContext()। GetRealPath (बिलाव 8 में) गलत पथ

xslFilePath = config.getServletContext().getRealPath(System.getProperty("file.separator") + "xsl"); 

कॉन्फ़िगर ServletConfig का एक उदाहरण है।

XSL परियोजना के अंदर है और सी के रूप में तैनात: \ MyProject \ निर्माण \ वेब \ XSL। \ Program Files \ Apache सॉफ्टवेयर फाउंडेशन \ अपाचे बिलाव 8.0.3 \ बिन \ अशक्त: जब सर्वलेट xslFilePath में स्थित एक फ़ाइल संदर्भ के लिए प्रयास करता है, मैं एक अपवाद है जो इंगित करता है कि बिलाव वास्तव में सी में XSL फ़ाइल की तलाश में है मिलता है। जाहिर है यह गलत स्थान है, और कुछ भी नहीं मिला है। क्योंकि मैं स्रोत के लिए पहुँच नहीं है

दुर्भाग्य से मैं कोड बदल नहीं सकते। तो मैं जानना चाहूंगा कि यह टोमकैट के लिए अपेक्षित व्यवहार है या नहीं? क्या कोई टॉमकैट कॉन्फ़िगरेशन है जो मुझे यह सुनिश्चित करने देगा कि पथ को तैनाती निर्देशिका में संदर्भित किया गया है, न कि टॉमकैट बिन निर्देशिका में? कुछ अन्य सर्वलेट कंटेनर चुनना बेहतर होगा? किसी भी सलाह की सराहना की जाएगी।

उत्तर

9

उपयोग getRealPath ("/ XSL")।

getRealPath() के लिए पैरामीटर एक 'आभासी पथ' है - दुर्भाग्य से - जावा दस्तावेज़ों में उपयोग की जाने वाली अवधारणा है लेकिन वास्तव में कहीं भी परिभाषित नहीं है। यह आपके वेब एप्लिकेशन में संसाधन का मार्ग माना जाता है और प्लेटफ़ॉर्म पर ध्यान दिए बिना उस मामले में विभाजक हमेशा '/' होता है।

+11

यह जवाब सही है, लेकिन यह सिर्फ गलत पथ विभाजक का उपयोग कर के बारे में नहीं है। टोमकैट के पहले संस्करणों को रीयलपैथ ("xsl") को प्रारंभिक विभाजक के साथ अनुमति नहीं मिली, लेकिन टॉमकैट 8 को "/ xsl" की आवश्यकता होती है (अन्यथा शून्य वापस आती है)। इसने मेरे कई निजी वेब अनुप्रयोगों को तोड़ दिया है, जिनमें से अधिकांश टॉमकैट 5 के दिनों से अपरिवर्तित बचे हैं ... – sam

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