Hibernate和DB2连接

问题描述:

我真是一个很大的问题在这里。我正在连接Hibernate的Db2。Hibernate和DB2连接

下面是DB2连接

<property name="dialect">org.hibernate.dialect.DB2Dialect</property> 
    <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property> 
    <property name="hibernate.connection.datasource">jdbc/hla</property>  
<property name="hibernate.show_sql">false</property> 
<property name="connection.driver_class">com.ibm.db2.jcc.DB2Driver</property> 
<property name="connection.url">jdbc:db2://192.262.3.12:34333/dbname;create=true</property> 
    <property name="connection.username">Db2admin</property> 
    <property name="connection.password">******</property> 

我hibernate.cfg.xml文件的代码当我尝试创建会话

Session session = HibernateUtil.getSessionFactory().getCurrentSession(); 

它抛出异常。我附上了这个例外的一部分。希望它会有所帮助。

16:15:33,749 ERROR [DispatchAction] Dispatch[/list] to method 'listComponents' returned an exception 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.GeneratedMethodAccessor66.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:615) 
    at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:269) 
    at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:170) 
    at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:58) 
    at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:67) 
    at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:51) 
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) 
    at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304) 
    at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190) 
    at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:283) 
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182) 
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) 
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446) 
    at java.lang.Thread.run(Thread.java:797) 
Caused by: 
java.lang.NoClassDefFoundError: com.sit.util.HibernateUtil (initialization failure) 
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:123) 
    at com.core.dao.Dao.getAlls(Unknown Source) 
    at com.sit.visualisation.actions.VisualListAction(VisualListAction.java:99) 
    ... 34 more 
Caused by: 
java.lang.Throwable: java.lang.ExceptionInInitializerError 

任何帮助将不胜感激。

+1

“java.lang.NoClassDefFoundError:com.pirean.sit.util.HibernateUtil”好像这个类不在应该的位置。 – fmucar 2011-03-30 11:40:03

你为什么要定义“数据源”和连接属性(jdbc url,用户名,密码)?您应该消耗由你的容器(优选的)提供了一种数据源或让Hibernate直接连接到数据库(在独立环境是有用的)。

在你的情况,例外的是,Hibernate无法得到使用名称为“jdbc/HLA”从JNDI连接。所以,检查你的应用程序服务器的配置。如果删除数据源配置,Hibernate会尝试直接连接到数据库,使用您提供的其他信息(JDBC URL,用户名,密码)。

<!-- Hibernate will try to get "jdbc/hla" from the application server --> 
<property name="hibernate.connection.datasource">jdbc/hla</property>  

<!-- Hibernate will try to connect directly to the database --> 
<property name="connection.url">jdbc:db2://192.262.3.12:34333/dbname;create=true</property> 
<property name="connection.username">Db2admin</property> 
<property name="connection.password">******</property> 
+0

感谢您的回复。我也在想你在这里提到的错误。那么我应该在hibernate.cfg.xml文件中给出哪些属性? – 2011-03-30 17:15:38

+0

这取决于。您想做什么?使用你的容器提供的连接,还是让Hibernate管理它? – jpkrohling 2011-03-30 17:35:56

+0

我想要这样做。不管我用哪种方式。请指导我做任何方法。 – 2011-03-31 06:11:35

我认为堆栈跟踪是不完整的......问题是,com.sit.util.HibernateUtil类的iniziatization是抛出一个异常,这可能是描述后:

Caused by: 
java.lang.Throwable: java.lang.ExceptionInInitializerError