Hibernate и соединение с DB2 - PullRequest
0 голосов
/ 30 марта 2011

У меня действительно большая проблема. Я подключаю Db2 через Hibernate.

Ниже приведен код моего файла hibernate.cfg.xml для подключения к 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>  

Когда я пытаюсь создать сессию

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 ]

2 голосов
/ 30 марта 2011

Почему вы определяете «источник данных» и свойства соединения (URL-адрес jdbc, имя пользователя, пароль)?Вы должны либо использовать источник данных, предоставленный вашим контейнером (предпочтительно), либо позволить Hibernate подключаться напрямую к базе данных (полезно в автономных средах).

В вашем случае, исключение состоит в том, что Hibernate не может получить соединения от JNDI, используя имя "jdbc / hla".Итак, проверьте конфигурацию вашего сервера приложений.Если вы удалите конфигурацию источника данных, Hibernate попытается подключиться напрямую к базе данных, используя другую предоставленную вами информацию (URL-адрес jdbc, имя пользователя, пароль).

<!-- 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 голосов
/ 30 марта 2011

Я думаю, что трассировка стека неполная ... проблема в том, что инициализация класса com.sit.util.HibernateUtil вызывает исключение, которое, вероятно, описано после:

Caused by: 
java.lang.Throwable: java.lang.ExceptionInInitializerError
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...