2010-05-20 6 views
10

से कॉन्फ़िगर किए गए defaultservlet का उपयोग करके यह जेट्टी 7 और xml कॉन्फ़िगर किया गया है, एम्बेडेड नहीं है।Jetty 7 के साथ स्थैतिक सामग्री की सेवा, web.xml

मैं एक स्थिर फ़ाइल, crossdomain.xml, एक ऐप में सेवा करने की कोशिश कर रहा हूं जो जेटी से चलने वाले डेटास्रोत से जुड़ता है। ऐसा करने के लिए, मैंने एक सर्वलेट और इसकी मैपिंग कॉन्फ़िगर की:

<servlet> 
    <servlet-name>default </servlet-name> 
    <servlet-class>org.eclipse.jetty.servlet.DefaultServlet </servlet-class> 
    <init-param> 
     <param-name>resourceBase </param-name> 
     <param-value>/foo/foo </param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>default </servlet-name> 
    <url-pattern>/* </url-pattern> 
</servlet-mapping> 

दुख की बात है कि मुझे 404 मिलते हैं। किसी भी मदद की बहुत सराहना की जाएगी, btw मेरी web.xm lfile के बाकी की तरह दिखता है:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5"> 

<servlet> 
    <servlet-name>cometd </servlet-name> 
    <servlet-class>org.cometd.server.continuation.ContinuationCometdServlet </servlet-class> 
    <load-on-startup>1 </load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>cometd </servlet-name> 
    <url-pattern>/cometd/* </url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>default </servlet-name> 
    <servlet-class>org.eclipse.jetty.servlet.DefaultServlet </servlet-class> 
    <init-param> 
     <param-name>resourceBase </param-name> 
     <param-value>/foo/foo </param-value> 
    </init-param> 
</servlet> 
<servlet-mapping> 
    <servlet-name>default </servlet-name> 
    <url-pattern>/* </url-pattern> 
</servlet-mapping> 


<servlet> 
    <servlet-name>initializer </servlet-name> 
    <servlet-class>com.foo.research.Initializer </servlet-class> 
    <load-on-startup>2 </load-on-startup> 
</servlet> 

<filter> 
    <filter-name>cross-origin </filter-name> 
    <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter </filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>cross-origin </filter-name> 
    <url-pattern>/cometd/* </url-pattern> 
</filter-mapping> 

</web-app> 

उत्तर

16

मैं एक ही मुद्दा था, यहां एक स्निपेट है जो काम करता है (जेटी 6.1.22)। मैंने मूल रूप से org.eclipse को org.mortbay से बदल दिया और संसाधनबेस पैरामीटर हटा दिया (लेकिन नीचे देखें)। और यह वास्तव में मेरे युद्ध फ़ाइल के अंदर मेरी web.xml फ़ाइल में समाप्त होता है:

<servlet> 
    <servlet-name>myservlet</servlet-name> 
    <servlet-class>foo.bar.MyServlet</servlet-class> 
    <display-name></display-name> 
    <description>The smallest Servlet ever!</description> 
    </servlet> 
    <servlet> 
    <servlet-name>default</servlet-name> 
    <servlet-class>org.mortbay.jetty.servlet.DefaultServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>myservlet</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/static/*</url-pattern> 
    </servlet-mapping> 

फिर, आप अपने युद्ध फ़ाइल में "स्थिर" निर्देशिका में अपने स्टैटिक फ़ाइलें डाल करने के लिए की है। इस तरह (बस यह स्पष्ट करने के लिए): यदि आप अपने स्टैटिक फ़ाइलें कहीं और कर दिया (लेकिन अभी भी के तहत उन्हें नक्शा/स्थिर/URI) चाहते हैं

ROOT.war 
    |_ WEB-INF/ 
    |_ static/ 

, आप निर्दिष्ट करने के लिए resourceBase पैरामीटर का उपयोग कर सकते हैं निर्देशिका, जैसा आपने किया था। http://docs.codehaus.org/display/JETTY/Servlets+Bundled+with+Jetty

+2

जेट्टी 7 और 8 के लिए, का उपयोग org.eclipse.jetty.servlet.DefaultServlet org.mortbay.jetty.servlet.DefaultServlet –

+0

ही के बजाय:

जेट्टी के प्रलेखन मुझे समझने के लिए इस एक छोटा सा बेहतर मदद की जेटी 9 के साथ :) –

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