Boa tarde,
Estou começando um projeto que com struts 2 + hibernate + netBeans 7.1.2. Fiz o famoso alô mundo e o struts 2 funcionou beleza, então resolvi criar a primeira classe de modelo e mapear, só que quando eu inicio o tomcat ou implanto o projeto ele não funciona e lança a seguinte exception.
13/09/2012 13:05:36 org.apache.catalina.core.StandardContext filterStart
GRAVE: Exception starting filter TransactionFilter
java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.(Z)V
at net.sf.cglib.core.DebuggingClassWriter.(DebuggingClassWriter.java:47)
at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at net.sf.cglib.proxy.Enhancer.(Enhancer.java:69)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:117)
at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:43)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.(AbstractEntityTuplizer.java:135)
at org.hibernate.tuple.entity.PojoEntityTuplizer.(PojoEntityTuplizer.java:55)
at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.(EntityEntityModeToTuplizerMapping.java:56)
at org.hibernate.tuple.entity.EntityMetamodel.(EntityMetamodel.java:295)
at org.hibernate.persister.entity.AbstractEntityPersister.(AbstractEntityPersister.java:434)
at org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:109)
at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:226)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at br.com.onbudget.framework.hibernate.HibernateSessionFactory.initialize(HibernateSessionFactory.java:41)
at br.com.onbudget.framework.hibernate.HibernateSessionFactory.getSessionFactory(HibernateSessionFactory.java:26)
at br.com.onbudget.framework.hibernate.OpenHibernateSessionInViewFilter.getSessionFactory(OpenHibernateSessionInViewFilter.java:89)
at br.com.onbudget.framework.hibernate.OpenHibernateSessionInViewFilter.init(OpenHibernateSessionInViewFilter.java:32)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:98)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
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:662)
----------------------------------------------------------------------------------------------------------------------------------- OpenHibernateSessionInViewFilter ----------------------------------------------------------------------------------------------
public class OpenHibernateSessionInViewFilter implements Filter {
private static final Logger log = Logger.getLogger(OpenHibernateSessionInViewFilter.class.getName());
public static SessionFactory sf;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
log.finest("Inicializando o filter...");
log.finest("Obtendo o SessionFactory");
sf = getSessionFactory();
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
Session session = sf.getCurrentSession();
org.hibernate.Transaction t = null;
try {
log.finest("Iniciando uma transação com o banco de dados");
try {
t = session.beginTransaction();
} catch (SessionException Sexc) {
session = null;
log.severe("Não abriu uma transação com o banco de dados");
log.severe(Sexc.getMessage());
Sexc.printStackTrace();
}
// Call the next filter (continue request processing)
chain.doFilter(request, response);
// Commit and cleanup
log.finest("Consolidando a transação com o banco de dados");
if (session != null && !t.wasCommitted() && !t.wasRolledBack()) {
t.commit();
}
} catch (StaleObjectStateException staleEx) {
log.severe("Este interceptador não implementa controle otimista de concorrencia!");
log.severe("Sua aplicação não funcionará enquanto você não implementar a ação compensatória!");
// Rollback, close everything, possibly compensate for any permanent changes
// during the conversation, and finally restart business conversation. Maybe
// give the user of the application a chance to merge some of his work with
// fresh data... what you do here depends on your applications design.
throw staleEx;
} catch (Throwable ex) {
// Rollback only
ex.printStackTrace();
try {
if (session != null && !t.wasCommitted() && !t.wasRolledBack()) {
log.finest("Tentando desfazer a transação após a exceção");
t.rollback();
}
} catch (Throwable rbEx) {
log.severe("Não foi possível desfazer a transação após a exceção!");
}
// Let others handle it... maybe another interceptor for exceptions?
throw new ServletException(ex);
}
}
public static SessionFactory getSessionFactory() {
if (sf == null) {
sf = HibernateSessionFactory.getSessionFactory();
}
return sf;
}
@Override
public void destroy() {
}
--------------------------------------------------------------------------------------------- HibernateSessionFactory ---------------------------------------------------------------------------------
public class HibernateSessionFactory {
private static Map<String, SessionFactory> mapaDeSessionFactories = new HashMap();
private HibernateSessionFactory() {
}
public static SessionFactory getSessionFactory() {
SessionFactory retorno = mapaDeSessionFactories.get("default");
if (retorno == null) {
retorno = initialize();
}
return retorno;
}
public static SessionFactory getSessionFactory(String cfgName) {
SessionFactory retorno = mapaDeSessionFactories.get(cfgName);
if (retorno == null) {
retorno = initialize(cfgName);
}
return retorno;
}
private static SessionFactory initialize() {
SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
mapaDeSessionFactories.put("default", sf);
return sf;
}
private static SessionFactory initialize(String cfgName) {
SessionFactory sf = new AnnotationConfiguration().configure(cfgName).buildSessionFactory();
mapaDeSessionFactories.put(cfgName, sf);
return sf;
}
Percebi que o erro ocorre durante a inicialização do filtro que nós colocamos aqui, ai buscando por esse erro vi alguns comentários dizendo que poderia ser um problema relacionado a dependências das libs, só que eu não estou conseguindo resolver.
Devido a esse erro não estou nem conseguindo gerar as tabelas automaticamente.
Alguém pode me ajudar?