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
任何帮助将不胜感激。
你为什么要定义“数据源”和连接属性(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>
感谢您的回复。我也在想你在这里提到的错误。那么我应该在hibernate.cfg.xml文件中给出哪些属性? – 2011-03-30 17:15:38
这取决于。您想做什么?使用你的容器提供的连接,还是让Hibernate管理它? – jpkrohling 2011-03-30 17:35:56
我想要这样做。不管我用哪种方式。请指导我做任何方法。 – 2011-03-31 06:11:35
我认为堆栈跟踪是不完整的......问题是,com.sit.util.HibernateUtil类的iniziatization是抛出一个异常,这可能是描述后:
Caused by:
java.lang.Throwable: java.lang.ExceptionInInitializerError
“java.lang.NoClassDefFoundError:com.pirean.sit.util.HibernateUtil”好像这个类不在应该的位置。 – fmucar 2011-03-30 11:40:03