Jersey + JSP

Boa Tarde Senhores,

Estou tentando utilizar Jersey + JSP mas estou com problemas…

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
	<display-name>Archetype Created Web Application</display-name>
	<servlet>
		<servlet-name>Jersey Web Application</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>br.com.projetobase.restservices</param-value>
		</init-param>
		<init-param>
			<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
			<param-value>true</param-value>
		</init-param>		
		<init-param>
			<param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name>
			<param-value>/WEB-INF/jsp</param-value>
		</init-param>
		<init-param>
			<param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
			<param-value>/(resources|(WEB-INF/jsp))/.*</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name>Jersey Web Application</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
</web-app>

IndexResource

package br.com.projetobase.restservices;

import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;

import com.sun.jersey.api.view.Viewable;

@Path("/")
@Stateless
public class IndexResource { 	
	
	@Context 
	private UriInfo uriInfo; 
	
	@GET
    @Produces("text/html")
    public Viewable index() {
		System.out.println(uriInfo);
		System.out.println("uriInfo.getAbsolutePath " + uriInfo.getAbsolutePath());
		System.out.println("uriInfo.getBaseUri " + uriInfo.getBaseUri());
		System.out.println("uriInfo.getPath " + uriInfo.getPath());
        return new Viewable("/index.jsp");
		//return new Viewable("target/WEB-INF/jsp/index.jsp", this); 
    }

}

Engraçado que quando do o comando uriInfo.getPath ele não me retorna nada, mas não sei se isso tem relevância no assunto…

Erro:

HTTP ERROR 404

Problem accessing /projeto-base/WEB-INF/jsp/index.jsp. Reason:

Not Found

A minha estrutura possui a pasta target antes do WEB-INF, porém adicionei a pasta no web.xml e mesmo assim não deu certo.

Alguém sabe o problema?

Obrigado desde já…

Definição simples de estrutura de sistemas web. Você NÂO ACESSA O WEB-INF PELA URL.

Troque a url do seu web-service e ele irá funcinar :smiley:

Como eu faria isso?

Faz o seguinte, cria uma classe no seu sistema dessa forma


import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;


@ApplicationPath("/recursos")
public class Recurso extends Application{
    
}

Agora todos os seus web-services serão acessados por /seusistema/recursos/oseuserviço

Arranca isso do seu web.xml

        <init-param>  
            <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name>  
            <param-value>/WEB-INF/jsp</param-value>  
        </init-param>  
        <init-param>  
            <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>  
            <param-value>/(resources|(WEB-INF/jsp))/.*</param-value>  
        </init-param>  

e muda o @path do seu serviço por algo mais palpável, tipo

@Path("/indexResorce")

Acho que isso vai funcionar, não tenho certeza no seu caso pois nunca usei o REST pra devolver um jsp.

Boa sorte :smiley:

Não foi ;/.