Galera, estou recebendo o erro JNDI lookup failed for the resource e não consigo entender o porque disso estar acontecendo, sendo que eu estou mostrando o caminho exato para ela.
@EJB
private br.com.celg.sessao.ObrasFacade obrasFacade;
@PostConstruct
public void inicializarLista() {
Map<String, Object> map = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
if (!map.containsKey("obraFacade")) {
map.put("obraFacade", obrasFacade);
}
}
FACADE:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.celg.sessao;
import br.com.celg.entidade.ClassTaxonomia;
import br.com.celg.entidade.Obras;
import br.com.celg.sessao.interfaceFacade.ObrasFacadeLocal;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
/**
*
* @author Rodrigo
*/
@Stateless
public class ObrasFacade extends AbstractFacade<Obras> implements ObrasFacadeLocal {
@PersistenceContext(unitName = "SGT-SGIPU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public ObrasFacade() {
super(Obras.class);
}
@Override
public int count(String consultarPor, String parametroConsulta, ClassTaxonomia idClassTaxonomia, String tensao) {
String classe = Obras.class.getName().toString();
String nomePuro = classe.substring(classe.lastIndexOf(".") + 1, classe.length());
StringBuilder sb = new StringBuilder();
sb.append("select count(").append(nomePuro.toLowerCase()).append(".id) from ").append(nomePuro).append(" ").append(nomePuro.toLowerCase()).append(" ");
sb.append(" where 1 = 1 ");
if (idClassTaxonomia != null) {
sb.append(" and ").append(nomePuro.toLowerCase()).append(".idClassTaxonomia.id = :taxonomiaID ");
}
if (tensao != null && !tensao.isEmpty()) {
sb.append(" and ").append(nomePuro.toLowerCase()).append(".tensao like :valorTensao ");
}
if(parametroConsulta != null && !parametroConsulta.isEmpty()) {
switch (consultarPor) {
case "ODEX":
sb.append(" and ").append(nomePuro.toLowerCase()).append(".odex like '%").append(parametroConsulta).append("%'");
break;
case "titulo":
sb.append(" and ").append(nomePuro.toLowerCase()).append(".titulo like '%").append(parametroConsulta).append("%'");
break;
case "tipoObra":
sb.append(" and ").append(nomePuro.toLowerCase()).append(".tipoObra like '%").append(parametroConsulta).append("%'");
break;
case "codProjeto":
sb.append(" and ").append(nomePuro.toLowerCase()).append(".codProjeto =").append(parametroConsulta);
break;
default:
sb.append(" and ").append(nomePuro.toLowerCase()).append(".").append(consultarPor).append(" = ").append(parametroConsulta);
break;
}
}
javax.persistence.Query q = getEntityManager().createQuery(sb.toString());
if (idClassTaxonomia != null) {
q.setParameter("taxonomiaID", idClassTaxonomia.getId());
}
if (tensao != null && !tensao.isEmpty()) {
q.setParameter("valorTensao", tensao);
}
return ((Long) q.getSingleResult()).intValue();
}
@Override
public List findRange(int[] range, String consultarPor, String parametroConsulta, ClassTaxonomia idClassTaxonomia, String tensao){
String classe = Obras.class.getName().toString();
String nomePuro = classe.substring(classe.lastIndexOf(".") + 1, classe.length());
StringBuilder sb = new StringBuilder();
sb.append("select ").append(nomePuro.toLowerCase()).append(" from ").append(nomePuro).append(" ").append(nomePuro.toLowerCase()).append(" ");
sb.append(" where 1 = 1 ");
if (idClassTaxonomia != null) {
sb.append(" and ").append(nomePuro.toLowerCase()).append(".idClassTaxonomia.id = :taxonomiaID ");
}
if (tensao != null && !tensao.isEmpty()) {
sb.append(" and ").append(nomePuro.toLowerCase()).append(".tensao like :valorTensao ");
}
if(parametroConsulta != null && !parametroConsulta.isEmpty()) {
switch (consultarPor) {
case "ODEX":
sb.append(" and ").append(nomePuro.toLowerCase()).append(".odex like '%").append(parametroConsulta).append("%'");
break;
case "titulo":
sb.append(" and ").append(nomePuro.toLowerCase()).append(".titulo like '%").append(parametroConsulta).append("%'");
break;
case "tipoObra":
sb.append(" and ").append(nomePuro.toLowerCase()).append(".tipoObra like '%").append(parametroConsulta).append("%'");
break;
case "codProjeto":
sb.append(" and ").append(nomePuro.toLowerCase()).append(".codProjeto =").append(parametroConsulta);
break;
default:
sb.append(" and ").append(nomePuro.toLowerCase()).append(".").append(consultarPor).append(" = ").append(parametroConsulta);
break;
}
}
sb.append(" order by ").append(nomePuro.toLowerCase()).append(".titulo ");
javax.persistence.Query q = getEntityManager().createQuery(sb.toString());
if (idClassTaxonomia != null) {
q.setParameter("taxonomiaID", idClassTaxonomia.getId());
}
if (tensao != null && !tensao.isEmpty()) {
q.setParameter("valorTensao", tensao);
}
q.setMaxResults(range[1] - range[0]);
q.setFirstResult(range[0]);
return q.getResultList();
}
}
Classe Controller completa:
package br.com.celg.controlado;
import br.com.celg.entidade.Obras;
import br.com.celg.controlado.util.AbstractController;
import br.com.celg.controlado.util.JsfUtil;
import br.com.celg.controlado.util.PaginationHelper;
import br.com.celg.entidade.ClassTaxonomia;
import br.com.celg.sessao.interfaceFacade.ObrasFacadeLocal;
import java.util.ArrayList;
import java.util.List;
import java.io.Serializable;
import java.io.ByteArrayOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.OutputStream;
import java.util.Map;
import java.util.ResourceBundle;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
@ManagedBean(name = "obrasController")
@ViewScoped
public class ObrasController extends AbstractController implements Serializable {
private Obras current;
@EJB
private br.com.celg.sessao.interfaceFacade.ObrasFacadeLocal ejbFacade;
@EJB
private br.com.celg.sessao.ObrasFacade obrasFacade;
private List<Obras> obrasList;
private ClassTaxonomia taxonomia;
private String tensao;
@Override
public SelectItem[] getSelectItemsConsulta() {
SelectItem[] itemsLocal = new SelectItem[4];
//itemsLocal[0] = new SelectItem("id", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_id"));
itemsLocal[0] = new SelectItem("titulo", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_titulo"));
//itemsLocal[2] = new SelectItem("recurso", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_recurso"));
itemsLocal[1] = new SelectItem("codProjeto", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_codProjeto"));
itemsLocal[2] = new SelectItem("odex", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_odex"));
itemsLocal[3] = new SelectItem("tipoObra", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_tipoObra"));
//itemsLocal[6] = new SelectItem("dataPrevEnerg", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_dataPrevEnerg"));
//itemsLocal[7] = new SelectItem("dataPrevConclusao", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_dataPrevConclusao"));
//itemsLocal[8] = new SelectItem("responsavelContratacoes", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_responsavelContratacoes"));
//itemsLocal[9] = new SelectItem("statusContrato", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_statusContrato"));
//itemsLocal[10] = new SelectItem("terreno", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_terreno"));
//itemsLocal[11] = new SelectItem("obrasExtensao", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_obrasExtensao"));
//itemsLocal[12] = new SelectItem("autorizacoesObrasList", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_autorizacoesObrasList"));
//itemsLocal[13] = new SelectItem("orcamentoObrasList", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_orcamentoObrasList"));
//itemsLocal[3] = new SelectItem("idClassTaxonomia", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_idClassTaxonomia"));
//itemsLocal[4] = new SelectItem("tensao", ResourceBundle.getBundle("/Bundle").getString("CreateObrasTitle_tensao"));
return itemsLocal;
}
public ObrasController() {
}
private List<Obras> listaObras;
public List<Obras> getListaObras() {
return listaObras;
}
public void setListaObras(List<Obras> listaObras) {
this.listaObras = listaObras;
}
@PostConstruct
public void inicializarLista() {
listaObras = ejbFacade.findAll();
//Inicializa Complete
Map<String, Object> map = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
if (!map.containsKey("obraFacade")) {
map.put("obraFacade", obrasFacade);
}
}
public Obras getSelected() {
if (current == null) {
current = new Obras();
selectedItemIndex = -1;
}
return current;
}
public void setSelected(Obras entidade) {
this.current = entidade;
}
//Método complete de obras.
public List<Obras> completeObras(String query) {
return JsfUtil.complete(query, obrasList, obrasFacade);
}
public void selecionarAutorizacoesObrasList() {
try {
br.com.celg.entidade.AutorizacoesObras objeto = (br.com.celg.entidade.AutorizacoesObras) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("item");
getSelected().getAutorizacoesObrasList().add(objeto);
} catch (Exception e) {
JsfUtil.addErrorMessage(e, e.getMessage());
}
}
public void removerAutorizacoesObrasList() {
try {
br.com.celg.entidade.AutorizacoesObras objeto = (br.com.celg.entidade.AutorizacoesObras) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("item");
getSelected().getAutorizacoesObrasList().remove(objeto);
} catch (Exception e) {
JsfUtil.addErrorMessage(e, e.getMessage());
}
}
public void selecionarOrcamentoObrasList() {
try {
br.com.celg.entidade.OrcamentoObras objeto = (br.com.celg.entidade.OrcamentoObras) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("item");
getSelected().getOrcamentoObrasList().add(objeto);
} catch (Exception e) {
JsfUtil.addErrorMessage(e, e.getMessage());
}
}
public void removerOrcamentoObrasList() {
try {
br.com.celg.entidade.OrcamentoObras objeto = (br.com.celg.entidade.OrcamentoObras) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("item");
getSelected().getOrcamentoObrasList().remove(objeto);
} catch (Exception e) {
JsfUtil.addErrorMessage(e, e.getMessage());
}
}
public void selecionarObrasContratacoesList() {
try {
br.com.celg.entidade.ObrasContratacoes objeto = (br.com.celg.entidade.ObrasContratacoes) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("item");
getSelected().getObrasContratacoesList().add(objeto);
} catch (Exception e) {
JsfUtil.addErrorMessage(e, e.getMessage());
}
}
public void removerObrasContratacoesList() {
try {
br.com.celg.entidade.ObrasContratacoes objeto = (br.com.celg.entidade.ObrasContratacoes) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("item");
getSelected().getObrasContratacoesList().remove(objeto);
} catch (Exception e) {
JsfUtil.addErrorMessage(e, e.getMessage());
}
}
private ObrasFacadeLocal getFacade() {
return ejbFacade;
}
public ClassTaxonomia getTaxonomia() {
return taxonomia;
}
public void setTaxonomia(ClassTaxonomia taxonomia) {
this.taxonomia = taxonomia;
}
public String getTensao() {
return tensao;
}
public void setTensao(String tensao) {
this.tensao = tensao;
}
public PaginationHelper getPagination() {
if (pagination == null) {
pagination = new PaginationHelper(10) {
@Override
public int getItemsCount() throws Exception {
return getFacade().count(getConsultarPor(), getParametroConsulta(), getTaxonomia(), getTensao());
}
@Override
public DataModel createPageDataModel() throws Exception {
return new ListDataModel(getFacade().findRange(new int[]{getPageFirstItem(), getPageFirstItem() + getPageSize()}, getConsultarPor(), getParametroConsulta(), getTaxonomia(), getTensao()));
}
};
}
return pagination;
}
public String prepareView() {
current = (Obras) getItems().getRowData();
selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
return "View";
}
public String prepareCreate() {
current = new Obras();
selectedItemIndex = -1;
return "Create";
}
public String create() {
try {
getFacade().create(current);
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("ObrasCreated"));
return prepareCreate();
} catch (Exception e) {
JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
return null;
}
}
public String prepareEdit() {
current = (Obras) getItems().getRowData();
selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
return "Edit";
}
public String update() {
try {
getFacade().edit(current);
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("ObrasUpdated"));
return "List";
} catch (Exception e) {
JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
return null;
}
}
public String destroy() {
current = (Obras) getItems().getRowData();
selectedItemIndex = pagination.getPageFirstItem() + getItems().getRowIndex();
performDestroy();
recreateModel();
return "List";
}
public String destroyAndView() {
performDestroy();
recreateModel();
updateCurrentItem();
if (selectedItemIndex >= 0) {
return "View";
} else {
// all items were removed - go back to list
recreateModel();
return "List";
}
}
private void performDestroy() {
try {
getFacade().remove(current);
JsfUtil.addSuccessMessage(ResourceBundle.getBundle("/Bundle").getString("ObrasDeleted"));
} catch (Exception e) {
JsfUtil.addErrorMessage(e, ResourceBundle.getBundle("/Bundle").getString("PersistenceErrorOccured"));
}
}
private void updateCurrentItem() {
int count = getFacade().count();
if (selectedItemIndex >= count) {
// selected index cannot be bigger than number of items:
selectedItemIndex = count - 1;
// go to previous page if last page disappeared:
if (pagination.getPageFirstItem() >= count) {
pagination.previousPage();
}
}
if (selectedItemIndex >= 0) {
current = getFacade().findRange(new int[]{selectedItemIndex, selectedItemIndex + 1}).get(0);
}
}
@Override
public void consultar() {
try {
//getPagination().getItemsCount();
items = getPagination().createPageDataModel();
} catch (Exception ex) {
JsfUtil.addErrorMessage(ex, ResourceBundle.getBundle("/Bundle").getString("OcorreuErro"));
}
}
public void next() {
try {
getPagination().nextPage();
items = getPagination().createPageDataModel();
} catch (Exception ex) {
JsfUtil.addErrorMessage(ex, ResourceBundle.getBundle("/Bundle").getString("OcorreuErro"));
}
}
public void previous() {
try {
getPagination().previousPage();
items = getPagination().createPageDataModel();
} catch (Exception ex) {
JsfUtil.addErrorMessage(ex, ResourceBundle.getBundle("/Bundle").getString("OcorreuErro"));
}
}
public void inicio() {
try {
getPagination().startPage();
items = getPagination().createPageDataModel();
} catch (Exception ex) {
JsfUtil.addErrorMessage(ex, ResourceBundle.getBundle("/Bundle").getString("OcorreuErro"));
}
}
public void fim() {
try {
getPagination().endPage();
items = getPagination().createPageDataModel();
} catch (Exception ex) {
JsfUtil.addErrorMessage(ex, ResourceBundle.getBundle("/Bundle").getString("OcorreuErro"));
}
}
public SelectItem[] getItemsAvailableSelectMany() {
return JsfUtil.getSelectItems(ejbFacade.findAll(), false);
}
public SelectItem[] getItemsAvailableSelectOne() {
return JsfUtil.getSelectItems(ejbFacade.findAll(), true);
}
public void gerarRelatorio() {
try {
ByteArrayOutputStream baos = null;
//JsfUtil.relatorio(null, null, new int[]{3, 10, 6, 6, 3, 3, 3, 4}, null, null);
HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
response.setContentType("application/pdf");
// response.setContentType("application/force-download");
response.setContentLength(baos.size());
OutputStream os = response.getOutputStream();
baos.writeTo(os);
os.flush();
os.close();
} catch (Exception ex) {
JsfUtil.addErrorMessage(ex, ResourceBundle.getBundle("/Bundle").getString("OcorreuErro"));
}
}
@FacesConverter(forClass = Obras.class)
public static class ObrasControllerConverter implements Converter {
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
if (value == null || value.length() == 0 || value.equals("null")) {
return null;
}
ObrasController controller = (ObrasController) facesContext.getApplication().getELResolver().
getValue(facesContext.getELContext(), null, "obrasController");
return controller.ejbFacade.find(getKey(value));
}
java.math.BigDecimal getKey(String value) {
java.math.BigDecimal key;
key = new java.math.BigDecimal(value);
return key;
}
String getStringKey(java.math.BigDecimal value) {
StringBuffer sb = new StringBuffer();
sb.append(value);
return sb.toString();
}
public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
if (object == null) {
return null;
}
if (object instanceof Obras) {
Obras o = (Obras) object;
return getStringKey(o.getId());
} else {
throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + ObrasController.class.getName());
}
}
}
@FacesConverter(value = "ObrasConverter")
public static class ObrasController2Converter implements Converter {
public Object getAsObject(FacesContext facesContext, UIComponent component, String value) {
if (value == null || value.length() == 0 || value.equals("null")) {
return null;
}
ObrasController controller = (ObrasController) facesContext.getApplication().getELResolver().
getValue(facesContext.getELContext(), null, "obrasController");
return controller.ejbFacade.find(getKey(value));
}
java.math.BigDecimal getKey(String value) {
java.math.BigDecimal key;
key = new java.math.BigDecimal(value);
return key;
}
String getStringKey(java.math.BigDecimal value) {
StringBuffer sb = new StringBuffer();
sb.append(value);
return sb.toString();
}
public String getAsString(FacesContext facesContext, UIComponent component, Object object) {
if (object == null) {
return null;
}
if (object instanceof Obras) {
Obras o = (Obras) object;
return getStringKey(o.getId());
} else {
throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + ObrasController.class.getName());
}
}
}
@PreDestroy
public void shutdown() {
resetPage();
Map<String, Object> map = FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
map.remove("obraFacade");
}
public void resetPage() {
obrasList = null;
}
}