2012-05-25 16 views
5

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

मैं ग्रहण

JettyExample <Project> 
    src 
    sample_package 
     HelloWorld.java 
    WEB-INF 
     index.html 
     web.xml 

HelloWorld.java की

public static void main(String[] args) throws Exception 
{ 

    Server server = new Server(8080); 
    ResourceHandler resource_handler = new ResourceHandler(); 
    resource_handler.setDirectoriesListed(true); 
    resource_handler.setResourceBase(args.length == 2?args[1]:"."); 
    resource_handler.setWelcomeFiles(new String[]{ "WEB-INF/index.html" }); 


    System.out.println("serving " + resource_handler.getBaseResource()); 

    HandlerList handlers = new HandlerList(); 
    handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler() }); 
    server.setHandler(handlers); 
    server.start(); 
    server.join(); 

} 

index.html है

<html> 
<head> 
    <title>HTML Generator Sample Page</title> 
</head> 
<body> 
    <h1 style="text-align: center;"> 
     Agent Management Interface</h1> 
    <ol> 
     <li> 
      Start Platform</li> 
     <li> 
      Show Agent Status</li> 
     <li> 
      Create Dummy Agent</li> 
     <li> 
      Intiate Request Message</li> 
     <li> 
      Stop agent</li> 
     <li> 
      Stop Platform</li> 
    </ol> 
    <p> 
     Enter option :</p> 
    <p> 
     <textarea cols="10" name="myTextBox" rows="1" style="width: 104px; height: 25px;"></textarea></p> 
    <p> 
     <input name="option_selector" type="submit" value="option_selector" /></p> 
</body> 

स्रोत कोड में निम्नलिखित निर्देशिका संरचना का विकास किया है web.xml फ़ाइल स्वागत फ़ाइलों की सूची के साथ सामान्य है। जब मैं सर्वर चलाता हूं और लोकलहोस्ट लॉन्च करता हूं: 8080 वेब ब्राउज़र में, मुझे 404 त्रुटि मिल रही है, मुझे यकीन नहीं है कि मुझे वेब.एक्सएमएल फ़ाइल में जोड़ने की ज़रूरत है या web.xml फ़ाइल का रिफ्रेंसिंग HelloWorld.java मुख्य विधि में सही नहीं है।

मैं सर्वर-api.jar फ़ाइल और classpath में jetty.jar फ़ाइल शामिल कर रहा हूँ और ग्रहण के लिए Maven प्लगइन का उपयोग करते हुए नहीं:

कोई संकेत/सुझाव उपयोगी संपादित करें 1 हो जाएगा।

EDIT2:

2012-05-25 14:40:39.253:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.260:DBUG:oejs.Server:REQUEST/on org.eclipse.jett[email protected][email protected]:8080<->127.0.0.1:55062 
2012-05-25 14:40:39.264:DBUG:oejs.Server:RESPONSE/200 
2012-05-25 14:40:39.267:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.272:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.273:DBUG:oejs.Server:REQUEST /jetty-dir.css on org.eclipse.jett[email protected][email protected]:8080<->127.0.0.1:55062 
2012-05-25 14:40:39.275:DBUG:oejs.Server:RESPONSE /jetty-dir.css 404 
+0

यदि आप फ़ाइल के पूरे पथ में टाइप करते हैं, तो क्या यह अभी भी आपको त्रुटि दे रहा है? – BOSS

+0

@ अभिषेक बोस मैं निर्देशिका संरचना देख सकता हूं, केवल जब मैं लोकलहोस्ट टाइप करता हूं: 8080/src/WEB-INF मैं index.html पृष्ठ – bhavs

उत्तर

2

आप वेब-INF/index.html पर अपने स्वागत फ़ाइल निर्धारित किया है। वेब-आईएनएफ फ़ोल्डर के अंदर स्थित आइटम केवल सर्वलेट कंटेनर के लिए दृश्यमान होते हैं और कंटेनर के बाहर पहुंच योग्य नहीं होते हैं।

यह काम नहीं करेगा, क्योंकि index.html वेब-आईएनएफ के पीछे छिपा हुआ है। इसके अतिरिक्त, जब वेब-INF साथ काम करना, यह प्रथागत ऐसे /WEB-INF/file.html के रूप में, आवेदन की जड़ से उस तक पहुंच है:

resource_handler.setWelcomeFiles(new String[]{ "WEB-INF/index.html" }); 

आप एक के रूप में सिर्फ index.html फ़ाइल शामिल करते हैं ,

resource_handler.setWelcomeFiles(new String[]{ "index.html" }); 

यह परिवर्तन करने के बाद घाट को पुनः आरंभ करना सुनिश्चित करें के बाद से आवेदन की आवश्यकता होगी: स्वागत फ़ाइल, और यह भी सुनिश्चित करें कि index.html आपके आवेदन की जड़ में है, जेट्टी सर्वर इसे खोजने के लिए सक्षम होना चाहिए इस जानकारी को पुनः लोड करने के लिए।

साथ ही, सर्वर पर एक नए वेब अनुप्रयोग को कॉन्फ़िगर करते समय, आमतौर पर आपके लॉगिंग स्तर को सभी तरह से चालू करना एक अच्छा विचार है। सर्वर और ढांचे आमतौर पर निम्न स्तर पर लॉग इन करते हैं ताकि वे एप्लिकेशन लॉग में हस्तक्षेप न करें; हालांकि, इस मामले में, आपको यह देखने की ज़रूरत है कि जब आप स्थानीय ब्राउज़र लोड करते हैं, तो आपके ब्राउज़र में 8080 लोड करने पर सर्वलेट कंटेनर किस संसाधन तक पहुंचने का प्रयास कर रहा है।

आगे स्पष्टीकरण के लिए, ResourceHandler.setWelcomeFiles जावा विधि वेब के माध्यम से सर्वर को कॉन्फ़िगर करने जैसा ही है।गैर एम्बेडेड जेट्टी में एक्सएमएल, निम्नलिखित एक्सएमएल प्रविष्टि का उपयोग कर:

<welcome-file-list> 
      <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 

कुछ उदाहरण और Eclipse Wiki Page on Embedding Jetty पर अधिक प्रलेखन रहे हैं, और अधिक मार्गदर्शन के लिए उन्हें बाहर की जाँच कर लें। एम्बेडेड जेट्टी 6 की

फ़ाइल संरचना:

यहाँ एम्बेडेड जेट्टी की एक प्रति मेरे पास है का एक उदाहरण फ़ाइल संरचना है। ध्यान दें कि index.html रूट में है, src:

build.properties* index.html* README.textile* src/ war/ 
build.xml*   licenses/ server/   test/ WEB-INF/ 
+0

से HTML पृष्ठ देख सकता हूं लॉगिंग स्तर को बदलने के सुझाव के लिए धन्यवाद, इसके बाद भी बदलें, जब मैं लोकलहोस्ट टाइप करता हूं: 8080 अब मैं अपने कोड बेस की निर्देशिका संरचना देखता हूं, जब मैं src/WEB-INF फ़ोल्डर पर क्लिक करता हूं तो मैं अपने द्वारा बनाए गए HTML पृष्ठ को देख सकता हूं। लॉगिंग स्तर – bhavs

+1

ठीक से बढ़ने से लॉग संदेशों के साथ मैं प्रश्न अपडेट करूँगा। index.html को उसी फ़ोल्डर में src के रूप में ले जाएं - इसलिए वे भाई बहन हैं। आपकी index.html फ़ाइल जेटी की तलाश में 2 स्तर गहरा है। साथ ही, तथ्य यह है कि वेब-आईएनएफ दृश्यमान है, यह बताता है कि कॉन्फ़िगरेशन फ़ाइलों में से कोई भी कुछ भी नहीं कर रहा है, क्योंकि कंटेनर सामान्य रूप से डिफ़ॉल्ट रूप से उन्हें छुपाता है। लेकिन यह ठीक है क्योंकि आप XML फ़ाइलों के बजाय प्रोग्रामेटिक रूप से कॉन्फ़िगर कर रहे हैं ... – jmort253

+0

आपके सुझाव के लिए धन्यवाद, इससे मदद मिली, मैं अब पेज देख सकता हूं – bhavs