2011-11-24 16 views
5

मैं एप्लिकेशन सर्वर के रूप में MyEclipse और JBoss 5 का उपयोग करके "वेब" नामक एक बहुत ही मूल वेब प्रोजेक्ट बनाने की कोशिश कर रहा हूं। मैंने "पेज" नामक एक पैकेज बनाया है और इसके अंदर "उपयोगकर्ता इंटरफेस" नामक एक सर्वलेट है। समस्या यह है कि जब मैं प्रोजेक्ट को तैनात करता हूं और सर्वर चलाता हूं तो मुझे हमेशा त्रुटि रिपोर्ट मिलती है: HTTP स्थिति 404 - सर्वलेट उपलब्ध नहीं है।जेबॉस त्रुटि रिपोर्ट: HTTP स्थिति 404 - सर्वलेट उपलब्ध नहीं है

यह मेरा web.xml का एक हिस्सा है:

<servlet> 
    <servlet-name>UserInterface</servlet-name> 
    <servlet-class>pages.UserInterface</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>UserInterface</servlet-name> 
    <url-pattern>/UserInterface</url-pattern> 
    </servlet-mapping> 

और मैं करने के लिए ब्राउज़र में नेविगेट कर रहा हूँ: http://localhost:8080/web/UserInterface

क्या मैं गलत यहाँ कर रहा हूँ?

धन्यवाद

+0

तैनात वेब ऐप में फ़ाइलों की एक सूची उपयोगी होगी। क्या आप इसे एक .war के रूप में तैनात कर रहे हैं? –

+1

संदर्भ पथ = वेब के साथ तैनात परियोजना भी है? क्या आप रूट लोकहोस्ट तक पहुंच सकते हैं: 8080/वेब? –

+0

जब सर्वर प्रारंभ होता है या एप्लिकेशन तैनात हो रहा है, तो क्या आपको लॉग या कंसोल आउटपुट में कोई समस्या दिखाई देती है? – Santosh

उत्तर

2

मुझे अभी भी पता नहीं था कि क्या गलत था, लेकिन मैंने उपयोगकर्ता नामक एक और सर्वलेट बनाया है, और web.xml में मैंने कक्षा से पहले/सर्वलेट जोड़ा है और ब्राउज़र में इसे नेविगेट किया है (http: // localhost : 8080/वेब/सर्वलेट/उपयोगकर्ता) और यह काम किया।

<servlet> 
    <servlet-name>User</servlet-name> 
    <servlet-class>pages.User</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>User</servlet-name> 
    <url-pattern>/servlet/User</url-pattern> 
    </servlet-mapping> 

आपकी मदद के लिए सभी को धन्यवाद!

2

HTTP स्थिति 404 - सर्वलेट उपलब्ध नहीं है।

सर्वलेट की लोडिंग में नाकाम रही है (यदि सर्वलेट ठीक से web.xml में घोषित नहीं किया गया था या URL गलत था, तो आपको इसके स्थान देखा है चाहिए "404 - संसाधन नहीं मिला")। सीधे शब्दों में कहें, <servlet-class> गलत है या कंक्रीट क्लास फ़ाइल /WEB-INF/classes में मौजूद नहीं है।

+0

क्या एक सर्वलेट अपवाद 500 त्रुटि में होगा? –

+0

@ एंड्रेई: केवल 'सेवा()', 'doGet()' और इसी तरह से फेंक दिया गया। लेकिन इस मामले में सर्वलेट बस बिल्कुल उपलब्ध नहीं है। कंटेनर सर्वलेट यूआरएल मैपिंग से अवगत है, लेकिन हाथों में वैध कामकाजी उदाहरण नहीं है, क्योंकि तत्काल/प्रारंभिकता विफल हो गई है। – BalusC

+0

एचएम, हाँ, लेकिन मुझे अपने स्वयं के क्रैपी कोडिंग से काफी यकीन है कि अगर मैं, उदाहरण के लिए एक एनआईपी() ओवररीन विधि के साथ एक सर्वलेट है जो एनपीई फेंकता है, तो उस सर्वलेट तक पहुंच (उदाहरण के लिए जेटटी में) एक HTTP 500. –

4

404 का अर्थ है कि जिस यूआरएल को आप एक्सेस करने का प्रयास कर रहे हैं वह आपके सर्वर पर मौजूदा संसाधन को इंगित नहीं करता है। पता फिर से जांचें, शायद "वेब" (http://localhost:8080/web/UserInterface से) भाग सही नहीं है क्योंकि शायद ऐप उस नाम से तैनात नहीं है। डिफ़ॉल्ट रूप से ऐप संदर्भ नाम ".war" फ़ाइल के फ़ाइल नाम से लिया जाता है जैसे कि आपकी फ़ाइल "myApp.war" है, तो आपका ऐप http://localhost:8080/myApp

पर भी उपलब्ध होना चाहिए, अगर आप वास्तव में अपना तैनाती कर रहे हैं एक .ear फाइल के अंदर युद्ध कि कि कान फ़ाइल एक application.xml aplpication वर्णनकर्ता जो, एक विशिष्ट संदर्भ के लिए अपने app फ़ाइल मैप कर सकते हैं शामिल होंगे कोई बात नहीं क्या .war फ़ाइल नाम है, जैसे कुछ:

<module> 
    <web> 
     <web-uri>myApp.war</web-uri> 
     <context-root>theApp</context-root> 
    </web> 
    </module> 

अंत में , यदि आप जेबॉस ग्रहण कनेक्टर के साथ एक्लिप्स से ऑटोोडिविंग कर रहे हैं, तो कभी-कभी चीज खराब होती है और वास्तव में आपके ऐप को सही तरीके से तैनात नहीं करती है (भले ही ऐप स्वयं ठीक है)। यदि ऐसा है, तो मैन्युअल रूप से .war को एप्लिकेशन सर्वर पर तैनात करने का प्रयास करें और इसे इस तरह से जांचें।

+1

404 संदेश पढ़ें। यूआरएल निश्चित रूप से गलत नहीं है। – BalusC

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