Boa tarde.
Pessoal estou aprendendo java lendo o livro "Programação java para Web"
Não sei porque, mas o sistema simplesmente parou de tratar as exceptions que lanço;
Por exemplo, to forçando a exclusão de um estado que tem cidade vinculada, e aparece erro 500 na pagina, não volta para a tela de listagem com a mensagem que controlo no try catch do metodo excluir.
Abaixo segue os códigos das classe
ConexaoHibernateFilter
import javax.servlet.*;
import org.hibernate.SessionFactory;
import classe.risirefeicoes.utils.Conexao;
public class ConexaoHibernateFilter implements Filter {
private SessionFactory sf;
@Override
public void init(FilterConfig config) throws ServletException {
this.sf = Conexao.getSessionFactory();
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws ServletException {
try {
this.sf.getCurrentSession().beginTransaction();
filterChain.doFilter(servletRequest, servletResponse);
this.sf.getCurrentSession().getTransaction().commit();
this.sf.getCurrentSession().close();
} catch (Throwable ex) {
try {
if(this.sf.getCurrentSession().getTransaction().isActive()){
this.sf.getCurrentSession().getTransaction().rollback();
}
} catch (Throwable t) {
t.printStackTrace();
}
throw new ServletException(ex);
}
}
@Override
public void destroy() {}
}
EstadoDAOHIbernate
import java.util.List;
import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
import classe.risirefeicoes.utils.DAOException;
import classe.risirefeicoes.utils.FiltroQuery;
import classe.risirefeicoes.utils.GlossarioMensagens;
import classe.risirefeicoes.utils.ValidaOrdenacaoLimit;
public class EstadoDAOHibernate implements EstadoDAO {
private Session session;
private String filtroQuery;
public void setSession(Session session){
this.session = session;
}
private void setFiltroQuery(Estado estado){
this.filtroQuery = FiltroQuery.FiltroQuery(estado);
}
@Override
public void Salvar(Estado estado) throws DAOException {
this.session.flush();
this.session.clear();
if (estado.getEstadoID() == null ){
try {
this.session.save(estado);
} catch (Exception e) {
throw new DAOException(GlossarioMensagens.getInstance().getMSG04());
}
}else{
try {
this.session.update(estado);
} catch (Exception e) {
throw new DAOException(GlossarioMensagens.getInstance().getMSG05());
}
}
}
@Override
public void Excluir(Estado estado) throws DAOException{
this.session.flush();
this.session.clear();
try {
this.session.delete(estado);
} catch (Exception e) {
throw new DAOException(GlossarioMensagens.getInstance().getMSG06());
}
}
@SuppressWarnings("deprecation")
@Override
public Integer TotalRegistros() {
String sql = "SELECT COUNT(*) AS totalRegistros FROM vwlistaestado " ;
Query consulta = this.session.createSQLQuery(sql).addScalar("totalRegistros", Hibernate.INTEGER);
Integer totalRegistros = (Integer) consulta.uniqueResult();
return totalRegistros;
}
@Override
public Estado Obter(Estado estado) {
this.setFiltroQuery(estado);
String sql = "SELECT * FROM vwlistaestado " + this.filtroQuery ;
Query consulta = this.session.createSQLQuery(sql).addEntity(Estado.class);
return (Estado) consulta.uniqueResult();
}
@SuppressWarnings("unchecked")
@Override
public List<Estado> Pesquisar(Estado estado, String campoOrdenacao, String ordenacao, Integer pagina, Integer limit) {
this.setFiltroQuery(estado);
String sql = " SELECT * FROM vwlistaestado " + this.filtroQuery;
sql = ValidaOrdenacaoLimit.ValidaOrdenacaoLimit(sql, campoOrdenacao, ordenacao, pagina, limit);
Query consulta = this.session.createSQLQuery(sql).addEntity(Estado.class);
List<Estado> listaEstado = consulta.list();
return listaEstado;
}
}
web xml
<?xml version="1.0"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_3_0.xsd">
<display-name>Projeto</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-list>
<!-- JSF e PrimeFaces -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>cupertino</param-value>
</context-param>
<!-- Upload de Arquivos com PrimeFaces -->
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class> org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<context-param>
<param-name>com.sun.faces.expressionFactory</param-name>
<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>
<!-- Conexao Filter -->
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>resources.application</param-value>
</context-param>
<listener>
<listener-class>com.sun.faces.config.ConfigureListener</listener-class>
</listener>
<filter>
<filter-name>ConexaoHibernateFilter</filter-name>
<filter-class>classe.Projeto.utils.ConexaoHibernateFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ConexaoHibernateFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<!-- Spring Security -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
/WEB-INF/applicationContext-security.xml
</param-value>
</context-param>
<resource-ref>
<description>DataSource Projeto</description>
<res-ref-name>jdbc/Projeto</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
Att