2010-05-20 4 views
10

Ceci est jetty 7 et xml configuré, non incorporé. J'essaye de servir un fichier statique, crossdomain.xml, à une application qui se connecte à une source de données que je lance à partir de la jetée. Pour ce faire, j'ai configuré une servlet et sa mise en correspondance ainsi:Traitement du contenu statique avec jetty 7, en utilisant defaultservlet configuré à partir de web.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> 

Malheureusement tout ce que je reçois sont 404. Toute aide serait très appréciée, comme le reste de mon fichier web.xm lfile ressemble à:

<?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> 

Répondre

16

J'ai eu le même problème; voici un extrait qui fonctionne (Jetty 6.1.22). J'ai fondamentalement remplacé org.eclipse par org.mortbay et supprimé le paramètre resourceBase (mais voir ci-dessous). Et cela se termine en fait dans mon fichier web.xml dans mon fichier WAR:

<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> 

Ensuite, vous devez mettre vos fichiers statiques dans le répertoire « statique » dans votre fichier WAR. Comme cela (juste pour préciser):

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

Si vous voulez mettre vos fichiers statiques ailleurs (mais toujours les cartographier sous la/statique/URI), vous pouvez utiliser le paramètre resourceBase pour spécifier le répertoire, tout comme vous l'avez fait.

la documentation de la jetée m'a aidé à comprendre ce un peu mieux: http://docs.codehaus.org/display/JETTY/Servlets+Bundled+with+Jetty

+2

Pour Jetty 7 et 8, utilisez org.eclipse.jetty.servlet.DefaultServlet au lieu de org.mortbay.jetty.servlet.DefaultServlet –

+0

même avec Jetty 9 :) –

Questions connexes