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.