Estou encontrando problemas com a interação JSP-Hibernate.
O que estou tentando fazer é persistir uma classe (um recado com remetente, destinatário, título e texto) em banco de dados, com Hibernate, a partir de uma página web - um teste para uma aplicação maior.
Ao preencher o formulário com as informações do recado, o botão "OK" redireciona para uma página onde uma user tag captura os atributos adequados da página, monta o javabean e o persiste.
O problema é que, ao que tudo indica, o mecanismo JSP não está conseguindo acessar os JARs do Hibernate e eu recebo a seguinte mensagem de erro ao chegar à página onde os dados devem ser persistidos:
Bom você está correto o JSP não encontrou o jar do hibernate.
Você fez o import na página JSP desse org.hibernate.Session?
Ou faltou colocar o jar no lugar certo, geralmente dentro de seu-site / web-inf / lib.
Fiz um teste substituindo org.hibernate.Session por org.hibernate.classic.Session e o mecanismo JSP aceitou aquela classe, mas passou a não aceitar org.hibernate.cfg.Configuration, que eu uso para capturar uma sessão única para toda a aplicação.
Não basta ter os JARs do Hibernate fisicamente copiados para a pasta WEB-INF/lib… é preciso que os JARs referenciados no classpath sejam exatamente aqueles que estão em WEB-INF/lib. Certamente que eu deveria ter pensado nesse “pequeno detalhe”!! :oops:
De qualquer forma, agora tenho um segundo problema:
Uma vez rodando o sistema, o Hibernate não consegue encontrar o driver do PostgreSQL, como se pode ver adiante:
org.hibernate.HibernateException: JDBC Driver class not found: org.postgresql.Driver
at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:66)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:124)
at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:56)
at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:366)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:60)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1830)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1150)
at database.SessionHelper.initialize(SessionHelper.java:134)
at database.SessionHelper.getInstance(SessionHelper.java:65)
at msg.Message.save(Message.java:92)
at taglibs.ProcessTagSupport.doStartTag(ProcessTagSupport.java:76)
at org.apache.jsp.output_jsp._jspService(org.apache.jsp.output_jsp:91)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Já rodei um aplicativo desktop de teste com a mesma configuração do Hibernate e tudo foi OK. Ainda, já copiei o arquivo postgresql-8.1-407.jdbc3.jar para o diretóirio WEB-INF/lib e o referenciei a partir de lá.
Agradeço se alguém puder auxiliar a resolver esse problema!
É necessário colocar o arquivo do driver do Postgre nos seguintes diretórios (partindo do diretório de instalação do Tomcat: Tomcat5.5\)
Tomcat5.5\common\lib
Tomcat5.5\server\lib
Assim rodou perfeitamente.