Lancando excecao org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544517. exception

Boa tarde galera estou com um problema, tenho uma aplicacao hibernate + struts2 + jquery + firebird, quase tudo funciona :), sou novato em java e estou tentando fazer minha primeira aplicacao funcional, pois ate agora era so exemplos e teste…:).

Criei em meu banco de dados algumas exceptions(firebird), para garantir algumas regras de meu negocio. quando tento fazer algo na aplicação (pagina) e o exception da base he lançada simplesmemte o tomcat tem que ser reniciado para liberar novamente a aplicação. Gostaria de enviar a mensagem do exception para a pagina mais nao estou conseguindo.

minha action

package bc.com.wizardslz.calendario.action;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.hibernate.classic.Session;
import org.hibernate.ejb.criteria.expression.function.LengthFunction;

import br.com.wizardslz.dao.CalendarioDAO;
import br.com.wizardslz.modelo.Calendario;
import br.com.wizardslz.util.HibernateUtil;

@ParentPackage(value = "json-default")
public class CalendarioAdicionarAction {
	private Calendario calendario;
	private String hora;
	
	@Action(value="/adicionaCaledario", results= {
			@Result(name="sucesso", type="httpheader", params={"status", "200"}),			
			@Result(name = "erro", type = "json")
			})
	  
	  public String execute() throws ParseException 
	  {
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		CalendarioDAO dao = new CalendarioDAO(session);

		session.beginTransaction();		
		
		String horaSring = getHora(); 
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
		Calendar hora = Calendar.getInstance(); 
		hora.setTime(sdf.parse(horaSring));
		calendario.setHora(hora);			
		try {
			dao.adiciona(calendario);
		} catch (Exception e) {
			session.getTransaction().rollback();              
			e.printStackTrace();			
                       return "erro";
		}			
		session.getTransaction().commit();
		return "sucesso";
	  }

	public Calendario getCalendario() {
		return calendario;
	}

	public void setCalendario(Calendario calendario) {
		this.calendario = calendario;
	}

	public String getHora() {
		return hora;
	}

	public void setHora(String hora) {
		this.hora = hora;
	}
				
}

meu metodo no dao

       public void adiciona(Calendario calendario) {			
		try {
			this.session.saveOrUpdate(calendario);			
		} catch (Exception e) {
			this.session.getTransaction().rollback();  
                        e.printStackTrace();                
		}
		  
	}

Um detalhe ele funciona normal qdo o banco nao lanca o exception

Muito Grato Claudiano