2013-10-09 2 views
7

У меня есть проект веб-сервиса Джерси RESTful. Я сконфигурировал контейнер Джерси в web.xml, и все работает нормально.Как настроить файл приветствия (HTML/JSP) в контейнере Джерси

В том же проекте я ввел одну страницу HTML и включил в <welcome-file-list> для обработки некоторого другого запроса без запроса. Но когда я обращаюсь к URL-адресу, файл приветствия не отображается.

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

Am использует Tomcat 7, JDK 7, Jersey 2.2 и Eclipse Juno. Как заставить файл приветствия работать, когда Джерси настроен? Есть ли какие-либо ограничения с Джерси или мне нужно настроить по-другому, чтобы достичь этого?

Мой web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com /xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>My Service</display-name> 
    <servlet> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class> 
    <init-param> 
     <param-name>jersey.config.server.provider.packages</param-name> 
     <param-value>com.my.rest.service</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup>  
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping>  
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    </welcome-file-list> 
</web-app> 
+1

Have вы попытались добавить тэг welcome-file-list в web.xml. Он должен работать. Что-то, как показано ниже .. \t <радушны-файл-список><радушны-файл> index.html \t \t <радушны-файл> index.htm \t \t <Добро пожаловать -file> index.jsp \t

+1

Просьба также поделиться своей конфигурацией web.xml – Jk1

+0

Опубликовано web.xml, я также добавил файл приветствия в список. – Murugesh

ответ

9
<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    id="WebApp_ID" version="2.5"> 
    <display-name>com.webservice.services</display-name> 
    <servlet> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
     <init-param> 
      <param-name>com.sun.jersey.config.property.packages</param-name> 
      <param-value>com.webservice.services</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>Jersey REST Service</servlet-name> 
     <url-pattern>/service/*</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 
</web-app> 


Try шаблон URL с другим путем, как приведенные выше (/ сервис/*) для отдыха. Он работает и приветствует отображение файлов при запуске сервера.

+0

Да, я изменил это. Весь запрос службы REST будет обрабатываться в пути http: // /<контекст root>/service, и файл приветствия будет доступен обычным способом. Он работает нормально. Хранение/* в контейнере REST делает страницу приветствия недоступным ресурсом. И все запросы отправятся в контейнер Джерси. – Murugesh

0

При использовании джерси, все запросы направляются на джерси сервлета т.е. ServletContainer. Поэтому, если любой запрос, который не соответствует какому-либо сопоставленному классу отдыха, он выдает 404. Но вы всегда можете добавить фильтры сервлетов, чтобы перехватить входящий запрос. В зависимости от входящего HTTP запроса URL (Defualt/радушны и т.д.), вы можете принять решение перенаправить его на страницу Weclome:

HttpServletResponse httpResponse = (HttpServletResponse) response; 
httpResponse.sendRedirect("/welcome.jsp"); 
0

Я просто любопытно узнать, будет ниже приведен пример работы?

HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.sendRedirect("/welcome.jsp"); если будет, где этот sendRedirect() будет называться? с сервлетом, поэтому, если я не ошибаюсь, должен быть сервлет, который просто redirects запрос на страницу , не так ли?

5

текущее отображение сервлета

<servlet-mapping> 
<servlet-name>Jersey REST Service</servlet-name> 
<url-pattern>/*</url-pattern> 

который перенаправляет каждый запрос на джерси. так, чтобы страница приветствия видна вам необходимо сделать запись как

<servlet-mapping> 
<servlet-name>Jersey REST Service</servlet-name> 
<url-pattern>/rest</url-pattern> 

этот шаблон будет вызывать джерси только для URLs как

http://localhost:8080/rest/

и, таким образом, URL

http://localhost:8080/index.html

не будет перенаправлен на сервлет джерси.

Проект ориентируется же сценарий размещаются на https://github.com/skohli0302/jims

+0

Да, я сделал это точно. благодаря – Murugesh

3

В web.xml:

<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/somethinghere/*</url-pattern> 
</servlet-mapping> 

вместо

<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 
0

Вы можете иметь что-то вроде

<servlet-mapping> 
    <servlet-name>Jersey REST Service</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>/index.html</url-pattern> 
</servlet-mapping> 
Смежные вопросы