Alguem pode me ajudar?
Eu estou fazendo uma tela e cadastro usando JSF e hibernate no Eclipse.
Quando clico em gravar ele esta gravando no banco e dados porém aparece a seguinte mensagem de erro:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: #{idiomaBean.salvar}: java.lang.ExceptionInInitializerError
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
root cause
javax.faces.FacesException: #{idiomaBean.salvar}: java.lang.ExceptionInInitializerError
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:186)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:164)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:352)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
root cause
javax.faces.el.EvaluationException: java.lang.ExceptionInInitializerError
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:91)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:186)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:164)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:352)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
root cause
java.lang.ExceptionInInitializerError
controle.IdiomaBean.salvar(IdiomaBean.java:22)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.el.parser.AstValue.invoke(AstValue.java:172)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:186)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:164)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:352)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
root cause
java.util.MissingResourceException: Can’t find bundle for base name Mensagem, locale pt_BR
java.util.ResourceBundle.throwMissingResourceException(Unknown Source)
java.util.ResourceBundle.getBundleImpl(Unknown Source)
java.util.ResourceBundle.getBundle(Unknown Source)
util.SessionUtil.(SessionUtil.java:10)
controle.IdiomaBean.salvar(IdiomaBean.java:22)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.el.parser.AstValue.invoke(AstValue.java:172)
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:91)
javax.faces.component.UICommand.broadcast(UICommand.java:383)
org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:186)
org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:164)
org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:352)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:97)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.
Apache Tomcat/6.0.20
Criei uma pagina .jsp com o seguinte código:
<%@ taglib prefix=“f” uri=“http://java.sun.com/jsf/core”%>
<%@ taglib prefix=“h” uri=“http://java.sun.com/jsf/html”%>
<%@ taglib prefix=“a4j” uri=“http://richfaces.org/a4j” %>
<%@ taglib prefix=“rich” uri=“http://richfaces.org/rich” %>
<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>
<h:panelGrid columns="2">
<h:outputText value="Descrição: "></h:outputText>
<h:inputText id="desc_idioma" value="#{idiomaBean.idioma.desc_idioma}" size="50" required="true"></h:inputText>
<h:message for="desc_idioma" style="color: darkred"></h:message>
</h:panelGrid>
<h:commandButton value="Salvar" action="#{idiomaBean.salvar}"></h:commandButton>
</h:form>
</f:view>
Tenho um arquivo messages.properties dentro de src com o seguinte codigo:
OperacaoSucesso=Operação concluída com sucesso!
OperacaoFracasso=Operação não concluída!
Criei uma clase hibernate.util dentro da package util com o seguinte código:
package util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
public class HibernateUtil {
private static SessionFactory factory;
static {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.configure();
factory = configuration.buildSessionFactory();
}
public static Session getSession() {
return factory.openSession();
}
}
Criei uma classe SessionUtil.java dentro da package util com oseguinte codigo:
package util;
import java.util.ResourceBundle;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
public class SessionUtil {
private static ResourceBundle bundle = ResourceBundle.getBundle("Mensagem",
FacesContext.getCurrentInstance().getViewRoot().getLocale());
public static void addErrorMessage(String msg) {
msg = bundle.getString(msg);
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
FacesContext fc = FacesContext.getCurrentInstance();
fc.addMessage(null, facesMsg);
}
public static void addSucessMessage(String msg) {
msg = bundle.getString(msg);
FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
FacesContext fc = FacesContext.getCurrentInstance();
fc.addMessage("Sucesso", facesMsg);
}
}
Meu hibernate.cfg.xml possui o seguinte código:
<?xml version="1.0" encoding="UTF-8"?> jdbc:mysql://localhost/newways com.mysql.jdbc.Driver org.hibernate.dialect.MySQLDialect root <property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">180</property>
<property name="hibernate.c3p0.idle_test_period">100</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
<mapping class="entidades.Idioma"/>
</session-factory>
dentro da package entidades criei a classe Idioma.java:
package entidades;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Idioma {
@Id
@GeneratedValue
private int cd_idioma;
private String desc_idioma;
public int getCd_idioma() {return cd_idioma;}
public String getDesc_idioma() {return desc_idioma;}
public void setCd_idioma(int cd_idioma) {
this.cd_idioma = cd_idioma;
}
public void setDesc_idioma(String desc_idioma) {
this.desc_idioma = desc_idioma;
}
}
dentro da package controle criei uma classe IdiomaBean.java com o seguinte código:
package controle;
import org.hibernate.Transaction;
import org.hibernate.Session;
import entidades.Idioma;
import util.HibernateUtil;
import util.SessionUtil;
public class IdiomaBean {
private Idioma idioma = new Idioma();
public String salvar() {
//Cria a sessao com o banco e a transaçao
Session session = HibernateUtil.getSession();
Transaction t = session.beginTransaction();
try {
//salva o objeto curso e se der tudo certo comita a transação
session.merge(idioma);
t.commit();
SessionUtil.addSucessMessage("Operação concluída com sucesso");
//limpa o objeto idioma para novas inserções
idioma = new Idioma();
} catch (Exception e) {
// se ocorrer algo errado cancela a transacao
t.rollback();
SessionUtil.addErrorMessage("Falha na operação");
} finally {
//fecha a sessao com o banco de dados
session.close();
}
return null;
}
public Idioma getIdioma() {
return idioma;
}
public void setIdioma(Idioma idioma) {
this.idioma = idioma;
}
}
meu web.xml possui o seguinte codigo:
<?xml version="1.0" encoding="UTF-8"?>
Projeto
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
org.richfaces.SKIN
deepMarine
javax.faces.STATE_SAVING_METHOD
server