Кажется, Jetty не использует "web. xml" для сайта stati c - PullRequest
0 голосов
/ 12 февраля 2020

Я запускаю jetty-9.4.8.v20171121 на Windows 10 на локальном хосте в качестве автономного сервера с помощью следующего пакетного сценария:

cd S:\Users\user\.jetty
S:
call java -jar S:\Applications\Jetty\start.jar

На этом сервере размещено несколько веб-приложений, некоторые из них Java приложений, некоторые из них - просто stati c веб-сайты, которые я использую для тестирования во время разработки. Один из таких сайтов c - это папка моих локальных проектов:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure class="org.eclipse.jetty.server.handler.ContextHandler">
  <Set name="contextPath">/projekte</Set>
  <Set name="handler">
    <New class="org.eclipse.jetty.server.handler.ResourceHandler">
      <Set name="resourceBase">S:/Users/user/My Projects</Set>
      <Set name="directoriesListed">true</Set>
    </New>
  </Set>
  <Set name="virtualHosts">
    <Array type="java.lang.String">
      <Item>proj.local</Item>
      <Item>127.0.0.2</Item>
    </Array>
  </Set>
</Configure>

. Эта папка отлично работает. Я могу перейти к http://127.0.0.2/projekte, просмотреть список каталогов и успешно загрузить файлы.

Внутри S:/Users/user/My Projects У меня есть папка с именем WEB-INF. Он содержит файл web.xml, единственной целью которого является отображение типов содержимого и отображение страницы с ошибкой:

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
   xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
   version="3.1"> 

  <mime-mapping>
    <extension>xht</extension>
    <mime-type>application/xhtml+xml</mime-type>
  </mime-mapping>
  <mime-mapping>
    <extension>wsc</extension>
    <mime-type>application/xml</mime-type>
  </mime-mapping>
  <mime-mapping>
    <extension>atom</extension>
    <mime-type>application/atom+xml</mime-type>
  </mime-mapping>

  <error-page>
    <error-code>404</error-code>
    <location>/error404.html</location>
  </error-page>
</web-app>

Но сервер, похоже, не учитывает ее. Ни одно из отображений, как я определил, не увенчалось успехом. При тестировании файла WS C (который должен соответствовать application/xml) я вообще не получаю Content-Type:

S:\Users\user>wget --server-response --spider -q http://127.0.0.2/projekte/Samples/WindowsScriptComponent.wsc

HTTP/1.1 200 OK
Last-Modified: Wed, 12 Feb 2020 10:33:41 GMT
Accept-Ranges: bytes
Content-Length: 7121
Server: Jetty(9.4.8.v20171121)

Если я тестирую другой файл (MS Excel), я получаю:

S:\Users\user>wget --server-response --spider -q http://127.0.0.2/projekte/Samples/excel.xls                                                                                      

HTTP/1.1 200 OK                                                                                                                                                                 
Last-Modified: Sat, 18 Aug 2001 19:00:00 GMT                                                                                                                   
Content-Type: application/vnd.ms-excel                                                                           
Accept-Ranges: bytes                                                     
Content-Length: 5632                               
Server: Jetty(9.4.8.v20171121)                                                                                                                                                                                 

Также не отображается страница ошибок, я получаю стандартную страницу Jetty для 404.

Итак, вот я:

  1. сконфигурированное состояние c сайт успешно (S:\Users\user\My Projects -> http://127.0.0.2/projekte)
  2. помещен, как задокументировано, WEB-INF в root каталог этого сайта (S:\Users\user\My Projects\WEB-INF)
  3. создал web.xml файл с mime-mappings в этом каталоге

Но, как кажется, Jetty использует только свою внутреннюю конфигурацию content-type , игнорируя мою.

Я регулярно получаю сообщения об ошибках во время запуска Jetty, например:

2020-02-12 11:24:20.891:INFO:oejw.StandardDescriptorProcessor:main: NO JSP Support for /basex, did not find org.eclipse.jetty.jsp.JettyJspServlet

, но я не думаю, что это связано. Поскольку я не Java разработчик, я должен использовать только файлы конфигурации.

Я что-то упустил? Спасибо.

...