2016-06-13 4 views
1

У меня есть веб-приложение, которое работает с Tomcat 8 и Jetty 8. В последнее время мы ввели сервлет-отображениясервлетов Jetty 8

<servlet> 
     <servlet-name>page</servlet-name> 
     <jsp-file>/Dashboard.html</jsp-file> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>page</servlet-name> 
     <url-pattern>/editjob</url-pattern> 
    </servlet-mapping> 

Когда вы помещаете URL с «http://localhost:8080/app/editjob», в котом перенаправляется "http://localhost:8080/app/Dashboard.html". Но когда мы развертываем его с помощью встроенного Jetty, 404 Not Found возвращается. Кажется, что сервлет-сопоставление не работает.

HTTP ERROR 404 
Problem accessing /app/page. Reason: 
Not Found 
Powered by Jetty:// 

я могу войти в приложение, используя непосредственно http://localhost:8080/app/Dashboard.html. Без отображений, у нас нет никаких проблем с причалом Это код для встраивания Jetty:

final Server server = new Server(); 
SocketConnector connector = new SocketConnector(); 
connector.setMaxIdleTime(-1); 
connector.setSoLingerTime(-1); 
connector.setPort(8080); 
server.setConnectors(new Connector[]{connector}); 
final WebAppContext context = new WebAppContext(); 
context.setServer(server); 
context.setContextPath("app"); 
context.setWar(location.toExternalForm()); 
server.setHandler(context); 
context.start(); 
server.join(); 

Это web.xml с отображениями.

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" 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"> 
<display-name>app</display-name> 
<servlet> 
    <servlet-name>ServletAdaptor</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 

    <init-param> 
     <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>ServletAdaptor</servlet-name> 
    <url-pattern>/webresources/*</url-pattern> 
</servlet-mapping> 
    <servlet> 
     <servlet-name>login</servlet-name> 
     <jsp-file>/Login.html</jsp-file> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet> 
     <servlet-name>page</servlet-name> 
     <jsp-file>/Dashboard.html</jsp-file> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
<session-config> 
    <session-timeout> 
     30 
    </session-timeout> 
</session-config> 
<servlet> 
    <servlet-name>context</servlet-name> 
    <servlet-class> 
     org.springframework.web.context.ContextLoaderServlet 
    </servlet-class> 
</servlet> 
<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/beans.xml</param-value> 
</context-param> 
<filter> 
    <filter-name>CORS</filter-name> 
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> 
    <init-param> 
     <param-name>cors.allowGenericHttpRequests</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.allowOrigin</param-name> 
     <param-value>*</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.allowSubdomains</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.supportedMethods</param-name> 
     <param-value>GET, POST, HEAD, PUT, DELETE, OPTIONS</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.supportedHeaders</param-name> 
     <param-value>Origin, Content-Type, X-Requested-With, Access-Control-Allow-Origin</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.supportsCredentials</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cors.maxAge</param-name> 
     <param-value>-1</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>CORS</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

    <servlet-mapping> 
     <servlet-name>login</servlet-name> 
     <url-pattern>/login</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
     <servlet-name>page</servlet-name> 
     <url-pattern>/home</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>page</servlet-name> 
     <url-pattern>/jobs</url-pattern> 
    </servlet-mapping> 

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

</welcome-file-list> 
</web-app> 

Я попытался определить отображения сервлетов, когда я запустил сервер, но не работал. Эти сопоставления прекрасно работают с Tomcat, но Jetty ... Я не знаю, в чем проблема.

Заранее спасибо.

ответ

1
Problem accessing /app/page. 

что URL не отображается в любом месте в вашем наклеенными web.xml

сервлетов с URLS узорами (определенных в <servlet-mapping> записей) являются:

  • /webresources/*
  • /login
  • /home
  • /jobs

Ни один из них не будет соответствовать по запросу URL из /page, в результате DefaultServlet (который по умолчанию отображается в /) возвращает 404 для этого запрошенного ресурса.

Кроме того, вы не настроили JSP в своей среде embedded-jetty, поэтому JSP не используется.

Скопировано из предыдущего ответа https://stackoverflow.com/a/28483349/775715

Если фрагмент кода показывает, как вы инициализации вашего веб-приложение, то вам не хватает много шагов инициализации JSP.

Там пример проекта был подготовлен в рамках проекта Jetty, показывающий, как использовать JSP со встроенным Jetty в

https://github.com/jetty-project/embedded-jetty-jsp

Обратите внимание на ...

  • Зависимости вам нужно
  • Требуемый тип ClassLoader
  • scratchDir декларации
  • установки ServletContainerInitializer
  • СПЯ Servlet Holder и отображения
  • InstanceManager

(просто назвать несколько крупных)

+0

Возможно, у меня плохое понимание поведения сервлет-отображений. Я хочу перенаправить множество URL-адресов на один HTML-код. Для этой цели я использую , но я действительно не хочу JSP, просто перенаправляю только на html. Возможно, мне не нужен jsp, и я использую web.xml неправильно. –

+0

Если im не ошибочно, «/ app/page» отображается, не так ли? У меня есть отображение сервлета с шаблоном «/ editjob /», который перенаправляется на сервлет с именем «страница». Этот сервлет указывает на /Dashboard.html Большое спасибо за ваш интерес !!! –

+1

Если это то, что вы хотите, тогда объявите '<сервлет-сопоставление>', который будет захватывать интересующий вас шаблон url-шаблона. Будьте осторожны, чтобы не захватывать слишком много, иначе вы будете на крючке, чтобы также отправляйте статический контент (css, images, javascript и т. д.) самостоятельно (что-то причал очень хорош, если вы его позволяете) –

Смежные вопросы