Aplicativo Corporativo - Sistema WEB

7 respostas
J

Pessoal, estou começando agora a desenvolver uma aplicação para web com JEE (usando GlassFilsh), e as dúvidas não param de surgir, para piorar, o pouco que tinha feito, parou de rodar agora.

Fiz o seguinte: criei as tabelas no Derby, a partir das tabelas deixei o NetBeans criar minhas entidades, com anotações e tudo mais. Depois, ainda baseado nessas tabelas e nas minhas entidades, criei pra cada entidade um facade e um facadeRemote. Depois criei alguns arquivos jsp, alguns htmls e css, dentro do módulo WAR, até aí estava rodando, tudo ok.
Quando fui criar meus servlets, dentro ainda do modeulo WAR, parou de rodar toda a minha aplicação. Mesmo apagando o servlet continua a não funcionar. O GlassFish mostra o seguinte erro:

[b]HTTP Status 503 -


type Status report

message

descriptionThe requested service () is not currently available.[/b]

Mandei o NetBeans verificar meu porjeto, e ele mostra o seguinte falha:

Test validity oj EJB 3.0 persistence unit. This test tests validity using a portable persistence provider. Please refer to EJB 3.0 Persistence API Specification for further information

E o seguinte aviso:

EntityManager can not be injected into a web application that uses multithread model.

Vocês acha mque está faltando alguma coisa no meu projeto? Preciso fazer mais alguma coisa dentro do módulo EJB para conseguir persistir alguns dados? Será que o erro está no meu servlet.

Vou postar um servlet pequeno meu:

package servlets;

import entidades.Cargo;
import facades.CargoFacade;
import facades.CargoFacadeRemote;
import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CargoServlet extends HttpServlet {
   
    @EJB
    private CargoFacadeRemote manager;

   protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            String cargo = "Teste";
            Cargo obj = new Cargo();
            obj.setCargo(cargo);
            manager.create(obj);
        } finally { 
            out.close();
        }
    } 

   @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

Ja tirei a criação do objeto de dentro do método processRequest, já coloquei dentro do doGet e doPost e nada, estou querendo apenas testar, por isso estou setando na mão, sem pegar de um jsp.

7 Respostas

B

se nao estou enganado, nao eh possivel injetar EJB em Servlets…

J

Tambem estou achando isso.

Dei uma pesquisada aqui e a injeção é feito em uma classe java normal.
O outro exemplo, que usa J2EE ele injeta no servlet, mas esta muito diferente do meu projeto.

Como posso fazer isso então? Como vou poder persistir meus dados?
Vou ter que passar meus dados de um jsp para um servlet e de um servlet para uma classe java normal, uma classe de controle, e aí sim, passar para minha entity manager?

B

O que voce pode fazer é obter seu EJB através de um lookup…

B

talvez isso ajude… nao testei…

B

It turns out that the web.xml file has to be version 2.5 or newer (as it is in your example). Annotations in the servlet are ignored if the web.xml is version 2.4 or older.

J

Valeu.
Vou testar aqui e posto o resultado.

O mais estranho é: porque continua a nao rodar e aparecer o erro, se eu tirei os servlets? O GlassFish tá rodando certinho, já testei.

Vou ver o link que voce passou

J

Meu xml ta com a versão certa, verifiquei agora.
Nao rodou.
Nao sei o que é.

Nao entendi muito bem o exemplo que é mostrado no link que me passou.
A minha estrutra de diretorio é assim:
EJB
–entidades
–facades
–facadesRemotes

WAR
–paginas web
– jsps, hmtl, css
– codigo-fonte
– servlets

Criado 23 de dezembro de 2009
Ultima resposta 23 de dez. de 2009
Respostas 7
Participantes 2