Hibernate和DB2连接

时间:2011-03-30 11:30:33

标签: hibernate connection db2

我在这里真的很不错。我正在连接Db2 thriugh Hibernate。

下面是我的db2连接的hibernate.cfg.xml文件代码

    <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>  

当我尝试创建会话

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

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

为什么要定义“数据源”和连接属性(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>  

答案 1 :(得分:0)

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

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