2013-10-09 10 views
7

Ich habe ein Jersey RESTful Web-Service-Projekt. Ich habe den Jersey-Container in der web.xml konfiguriert und alles funktioniert gut.So konfigurieren Sie Willkommensdatei (HTML/JSP) in Jersey-Container

Im selben Projekt habe ich eine HTML-Seite eingeführt und in der <welcome-file-list> enthalten, um einige andere nicht-REST-Anfrage zu behandeln. Aber wenn ich auf die URL zugreife, wird die Begrüßungsdatei nicht angezeigt.

Nachdem ich die Jersey-Containerkonfiguration in web.xml kommentiert und die Anwendung bereitgestellt habe, kann ich diesmal auf die Begrüßungsdatei zugreifen.

Ich verwende Tomcat 7, JDK 7, Jersey 2.2 und Eclipse Juno. Wie funktioniert die Begrüßungsdatei, wenn Jersey konfiguriert wurde? Gibt es irgendwelche Einschränkungen mit Jersey oder muss ich anders konfigurieren, um dies zu erreichen?

Mein 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 haben Sie haben versucht, hinzuzufügen Willkommen-Datei-Liste Tag zu web.xml. Es sollte funktionieren. So etwas wie unten .. \t index.html \t \t index.htm \t \t index.jsp \t

+1

Bitte teilen Sie auch Ihre web.xml-Konfiguration – Jk1

+0

Posted web.xml, ich habe die Begrüßungsdatei in der Liste auch hinzugefügt. – Murugesh

Antwort

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-Muster mit unterschiedlichen Pfaden wie oben angegeben (/ service/*) für REST. Es funktioniert und begrüßt die Anzeige von Dateien beim Serverstart.

+0

Ja, das habe ich geändert. Alle REST-Serviceanfragen werden im Pfad http: // //service behandelt und auf die Begrüßungsdatei wird normal zugegriffen. Es funktioniert gut. Durch das Speichern von/* im REST-Container wird die Willkommensseite als nicht verfügbare Ressource angezeigt. Alle Anfragen werden an den Jersey-Container gesendet. – Murugesh

0

Wenn Sie Jersey verwenden, werden alle Anfragen an Jersey Servlet heißt ServletContainer gerichtet sind. Wenn also eine Anfrage mit keiner zugeordneten Restklasse übereinstimmt, wird 404 ausgelöst. Sie können jedoch immer Servletfilter hinzufügen, um die eingehende Anfrage abzufangen. In Abhängigkeit von der eingehenden HTTP-Request-URL (defualt/welcome usw.), können Sie eine Entscheidung treffen, um es in der weclome Seite zu umleiten:

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

ich nur neugierig bin zu wissen, wird das folgende Beispiel arbeiten?

HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.sendRedirect("/welcome.jsp"); wenn es wird, wo diese sendRedirect() genannt werden? mit in einem Servlet, also wenn ich nicht falsch liege, sollte es ein Servlet geben, das nur redirects die Anfrage an die Seite, richtig?

5

Ihre aktuelle Servletzuordnung ist

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

, die jeden Antrag auf Jersey umleitet. so Begrüßungsseite sichtbar machen müssen Sie machen Eintrag wie

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

dieses Muster Trikot nur für Urls wie

http://localhost:8080/rest/

nennen und damit url

http://localhost:8080/index.html

werden nicht zu Jersey Servlet umgeleitet.

Ein Projekt gleiche Szenario Targeting auf https://github.com/skohli0302/jims gehostet

+0

Ja das habe ich genau gemacht. Vielen Dank – Murugesh

3

In web.xml:

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

statt

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

Sie so etwas wie

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