Обслуживание статического контента в Jetty 7 с использованием defaultservlet, настроенного из web.xml - PullRequest
10 голосов
/ 20 мая 2010

Это сконфигурированный Jetty 7 и 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. Любая помощь будет высоко ценится, между прочим, мой 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>

1 Ответ

16 голосов
/ 02 марта 2011

У меня была такая же проблема; Вот фрагмент кода, который работает (Jetty 6.1.22). Я в основном заменил org.eclipse на org.mortbay и удалил параметр resourceBase (но см. ниже). И это на самом деле заканчивается в моем файле web.xml внутри моего файла 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>

Затем вы должны поместить ваши статические файлы в «статический» каталог вашего Файл WAR. Вот так (просто чтобы прояснить):

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

Если вы хотите поместить ваши статические файлы в другое место (но все равно отобразите их в / static / URI), вы можете использовать параметр resourceBase, чтобы указать каталог, как и вы.

Документация Jetty помогла мне понять это немного лучше: http://docs.codehaus.org/display/JETTY/Servlets+Bundled+with+Jetty

...