Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

JSP no JBoss EAP

Olá

Estou tentando criar um projeto Web (Dynamic Web Project) e executa-lo no JBoss EAP6.

Criei o projeto, usando a runtime do JBoss EAP6, dynamic web module 3.0 , também criei o EAR na mesma tela.

Criei o arquivo WebContent/WEB-INF/index.jsp, adicionei o EAR project ao servidor, inicio o JBoss e tomo um 404 ao acessar o endereço http://localhost:8080/teste/index.jsp

Alguém me ajuda?

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" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>teste</display-name>
  <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>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

index.jsp

<html>
<head>
<title>TESTE</title>
</head>
<body>
    <header>
        <h1>TESTE JSP NO JBoss</h1>
    </header>
</body>
</html>

Agradeço!!

2 respostas
solução!

Fala Luiz, tudo bem ?

Imagino que teste seja o contexto do seu projeto. O que faz com que http://localhost:8080/teste/ aponte diretamente para sua pasta WebContent/ (que é a root folder de acordo com a especificação). Sendo assim o caminho completo para a JSP seria http://localhost:8080/teste/WEB-INF/index.jsp...

Acontece que a especificação de Servlets, por segurança, garante que o conteúdo a partir do diretório WEB-INF/é acessível somente de dentro do servidor. Portanto, se seu JSP está dentro de WEB-INF (como manda a boa prática ;]) não é possível acessá-lo diretamente de um cliente web navegador. Seria necessário que algum recurso interno do servidor o acessasse ou redirecionasse a requisição para o mesmo.

Você poderia ter uma Servlet fazendo esse papel. Exemplo:

@WebServlet("/home")
public class RedirectToHomeServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {

        System.out.println("Redirecionando para o JSP");
        request.getRequestDispatcher("/WEB-INF/index.jsp").forward(request, response);;
    }
}

Agora seria acessível através de http://localhost:8080/teste/home. =)

Espero ter ajudado. Abraço!

Valeu!

Deu certo sim, muito obrigado!

Eu achei que configurando o web.xml somente funcionaria. :)

Abraço!