Ola pessoal.
Depois de resistir ao máximo ao spring. Decidi colocar a mão na massa, principalmente para me beneficiar da intergração com o hibernate e opensessioninview.
Bom meu sistema é composto pelo famoso
package br.com.webscola.util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
AnnotationConfiguration configuration = new AnnotationConfiguration().configure("br/com/webscola/util/hibernate.cfg.xml");
sessionFactory = configuration.buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
Estou tentando fazer o mínimo de alterações possíveis para evitar grandes impactos no sistema. Estou tentando fazer o seguinte como CRUD.
Nome: Dionatan Hovoruski
Data: 16/12/2011
Descrição:
*/
package br.com.webscola.service.impl;
import br.com.webscola.controller.LoginController;
import br.com.webscola.model.bean.Curso;
import br.com.webscola.model.dao.HibernateDAO;
import br.com.webscola.model.dao.InterfaceDAO;
import br.com.webscola.service.CursoService;
import br.com.webscola.util.FacesContextUtil;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.hibernate.HibernateException;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("cursoService")
public class CursoServiceImpl implements CursoService {
@Autowired
SessionFactory sf;
Session session;
public List<Curso> listaTudo() {
try {
session = sf.openSession();
session.beginTransaction();
String sql;
sql = "select * from curso "
+ " where id_empresa = :empresa "
+ " order by descricao";
SQLQuery q = session.createSQLQuery(sql).addEntity(Curso.class);
LoginController loginController = (LoginController) FacesContextUtil.getSessionAttribute("loginController");
q.setParameter("empresa", loginController.getUsuario().getEmpresa().getId());
if (!q.list().isEmpty()) {
return q.list();
} else {
return new ArrayList<Curso>();
}
} catch (HibernateException e) {
session.getTransaction().rollback();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! Não foi possível listar", null));
e.getMessage();
} finally {
if (session.isOpen()) {
session.close();
}
}
return new ArrayList<Curso>();
}
public void adiciona(Curso curso) {
try {
session = sf.openSession();
session.beginTransaction();
LoginController loginController = (LoginController) FacesContextUtil.getSessionAttribute("loginController");
curso.setEmpresa(loginController.getUsuario().getEmpresa());
session.save(curso);
session.getTransaction().commit();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Registro inserido com sucesso!", null));
} catch (HibernateException e) {
session.getTransaction().rollback();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! Não foi possível salvar", null));
e.getMessage();
} finally {
if (session.isOpen()) {
session.close();
}
}
}
public void remove(Curso curso) {
try {
if (curso != null) {
session = sf.openSession();
session.beginTransaction();
session.delete(curso);
session.getTransaction().commit();
}
} catch (HibernateException e) {
session.getTransaction().rollback();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! Não foi possível remover", null));
e.getMessage();
} finally {
if (session.isOpen()) {
session.close();
}
}
}
public void atualiza(Curso curso) {
try {
session = sf.openSession();
session.beginTransaction();
session.update(curso);
session.getTransaction().commit();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Alteração realizada com sucesso!", null));
} catch (HibernateException e) {
session.getTransaction().rollback();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! Não foi possível alterar", null));
e.getMessage();
} finally {
if (session.isOpen()) {
session.close();
}
}
}
public Curso carrega(Integer codigo) {
try {
session = sf.openSession();
session.beginTransaction();
String sql;
sql = "select * from Curso "
+ " where id_curso = :codigo ";
SQLQuery q = session.createSQLQuery(sql).addEntity(Curso.class);
q.setParameter("codigo", codigo);
if (!q.list().isEmpty()) {
return (Curso) q.uniqueResult();
} else {
return new Curso();
}
} catch (HibernateException e) {
session.getTransaction().rollback();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro! Não foi possível buscar", null));
e.getMessage();
} finally {
if (session.isOpen()) {
session.close();
}
}
return null;
}
public List<Curso> busca(String nome) {
throw new UnsupportedOperationException("Not supported yet.");
}
}
Porém ao tentar chamar o método listatudo() estou tendo o seguinte erro:
28/12/2011 21:54:49 com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
SEVERE: Error Rendering View[/curso/index.xhtml]
com.sun.faces.mgbean.ManagedBeanCreationException: Um erro ocorreu ao realizar a injeção de recurso no bean gerenciado cursoMB
at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:229)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:105)
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71)
at org.apache.el.parser.AstValue.getValue(AstValue.java:147)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:413)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1750)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:58)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:46)
at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at br.com.webscola.util.EncodingFilter.doFilter(EncodingFilter.java:24)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: com.sun.faces.spi.InjectionProviderException
at com.sun.faces.vendor.WebContainerInjectionProvider.invokeAnnotatedMethod(WebContainerInjectionProvider.java:119)
at com.sun.faces.vendor.WebContainerInjectionProvider.invokePostConstruct(WebContainerInjectionProvider.java:99)
at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:223)
... 52 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.faces.vendor.WebContainerInjectionProvider.invokeAnnotatedMethod(WebContainerInjectionProvider.java:117)
... 54 more
Caused by: java.lang.NullPointerException
at br.com.webscola.service.impl.CursoServiceImpl.listaTudo(CursoServiceImpl.java:58)
at br.com.webscola.controller.CursoMB.carregar(CursoMB.java:60)
... 59 more