|
|
|
JBoss Seam EntityManager - проблема с сохранением данных
|
|||
|---|---|---|---|
|
#18+
Приветствую! Есть проект, изначально сгенерённый через seam-gen. В результате для работы с БД имеем JTA EntityManager. Т.е. управлять транзакциями не можем, что собственно до сих пор не сильно напрягало. Появилась однако необходимость грузить в БД объекты из xml путём парсинга, закидывания значений в созданный экземпляр Entity ну и em.persist(obj); Далее em.flush() после группы связанных объектов. Пока число объектов не превышало некоего числа (около 6000) всё просто было замечательно. Ежели число объектов больше (а по жизни их значительно больше) имеем такую ошибку: Код: xml 1. 2. 3. 4. 5. 6. 7. В результате в базе не сохраняется ни одного объекта, хотя я по наивности считал, что flush() как раз и фиксирует изменения в БД. Что мог сам предположить - попробовал, гугль чегой то совсем не помог - нешто такая уникальность ситуации? :-) Вот решил обратиться к местным знатокам - подскажите плиз как победить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 14:48:56 |
|
||
|
JBoss Seam EntityManager - проблема с сохранением данных
|
|||
|---|---|---|---|
|
#18+
авторВ результате для работы с БД имеем JTA EntityManager. Т.е. управлять транзакциями не можем, что собственно до сих пор не сильно напрягало А как же Transaction.instance() ? авторВ результате в базе не сохраняется ни одного объекта, хотя я по наивности считал, что flush() как раз и фиксирует изменения в БД. Смотря как настроить, в общем случае коммит естественно происходит по Transaction.commit() Вообще, посомтрите тут - может наведет на мысль, будут еще вопросы спрашивайте http://seamframework.org/Community/QuickEfficientPatternInSEAMForBulkUpdatesAndInserts ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 16:25:49 |
|
||
|
JBoss Seam EntityManager - проблема с сохранением данных
|
|||
|---|---|---|---|
|
#18+
AndreyDmt, В общем случае должно помочь вот это В любом случае нужен кусок кода вашего Seam Component ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2012, 17:04:54 |
|
||
|
JBoss Seam EntityManager - проблема с сохранением данных
|
|||
|---|---|---|---|
|
#18+
Господа, похоже меня клинит по полной. Подскажите плиз, а почему вот так тоже не работает (вываливается также по ошибке транзакции после попытки записи 4000-9000 объектов - в зависимости от нюансов настройки): Для экспериментов создал форму из одной кнопки и бин, в котором единственный обработчик нажатия кнопки. В листенере по тупому в цикле записываются entity. По прочитанным докам должно работать. Но как результат, имеем ошибку и ни одной записи в базе. Ниже листинг бина практически полный. Могущие помочь, не откажите плиз. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2012, 08:25:05 |
|
||
|
JBoss Seam EntityManager - проблема с сохранением данных
|
|||
|---|---|---|---|
|
#18+
AndreyDmtПодскажите плиз, а почему вот так тоже не работает (вываливается также по ошибке транзакции после попытки записи 4000-9000 объектов - в зависимости от нюансов настройки):1. Мы вам с удовольствием поможем, если вы нам расскажите, где именно возникает ошибка и приведете максимально полную информацию о ней - что за эксепшн, стек трейс, содержимое persistence.xml. 2. В вашем первом посту черным по белому написано: org.hibernate.exception.GenericJDBCException: Cannot open connection У вас Хибер не может подключиться к базе, Seam тут ни при чем. Смотрите конфигурацию persistence.xml и ищите там ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2012, 09:32:48 |
|
||
|
JBoss Seam EntityManager - проблема с сохранением данных
|
|||
|---|---|---|---|
|
#18+
Решил создать тестовый проект с нуля для проверки. Привожу persistence.xml. Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Ошибка возникает в цикле, при очередном Transaction.commit. Полный текст тоже пожалуйста: автор2012-01-18 11:54:47,968 WARN [com.arjuna.ats.arjuna.logging.arjLoggerI18N] (Thread-11) [com.arjuna.ats.arjuna.coordinator.TransactionReaper_18] - TransactionReaper::check timeout for TX -3f57f572:74e:4f164e7f:3db6 in state RUN 2012-01-18 11:54:47,984 WARN [com.arjuna.ats.arjuna.logging.arjLoggerI18N] (Thread-12) [com.arjuna.ats.arjuna.coordinator.BasicAction_58] - Abort of action id -3f57f572:74e:4f164e7f:3db6 invoked while multiple threads active within it. 2012-01-18 11:54:47,984 WARN [com.arjuna.ats.arjuna.logging.arjLoggerI18N] (Thread-12) [com.arjuna.ats.arjuna.coordinator.CheckedAction_2] - CheckedAction::check - atomic action -3f57f572:74e:4f164e7f:3db6 aborting with 1 threads active! 2012-01-18 11:54:48,015 WARN [org.hibernate.util.JDBCExceptionReporter] (http-127.0.0.1-8080-2) SQL Error: 0, SQLState: null 2012-01-18 11:54:48,015 ERROR [org.hibernate.util.JDBCExceptionReporter] (http-127.0.0.1-8080-2) Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57f572:74e:4f164e7f:3db6 status: ActionStatus.ABORTING >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57f572:74e:4f164e7f:3db6 status: ActionStatus.ABORTING >) 2012-01-18 11:54:48,015 ERROR [org.hibernate.event.def.AbstractFlushingEventListener] (http-127.0.0.1-8080-2) Could not synchronize database state with session org.hibernate.exception.GenericJDBCException: Cannot open connection at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449) at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167) at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:116) at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:109) at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:244) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2252) at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2688) at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:79) at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:263) at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:167) at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:321) at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:50) at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1027) at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:365) at org.hibernate.transaction.CMTTransaction.commit(CMTTransaction.java:98) at org.hibernate.ejb.transaction.JoinableCMTTransaction.commit(JoinableCMTTransaction.java:81) at org.testuploaddata.bean.TestUploadData.movedataHB(TestUploadData.java:85) at org.testuploaddata.bean.TestUploadData.uploadListener(TestUploadData.java:37) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.seam.util.Reflections.invoke(Reflections.java:22) at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:32) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56) at org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:28) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:77) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) at org.jboss.seam.core.SynchronizationInterceptor.aroundInvoke(SynchronizationInterceptor.java:32) at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107) at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:185) at org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:103) at org.testuploaddata.bean.TestUploadData_$$_javassist_seam_3.uploadListener(TestUploadData_$$_javassist_seam_3.java) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:335) at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:348) at org.jboss.el.parser.AstPropertySuffix.invoke(AstPropertySuffix.java:58) at org.jboss.el.parser.AstValue.invoke(AstValue.java:96) at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) at org.jboss.seam.el.OptionalParameterMethodExpression.invoke(OptionalParameterMethodExpression.java:39) at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68) at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:99) at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:771) at javax.faces.component.UICommand.broadcast(UICommand.java:372) at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:329) at org.ajax4jsf.component.AjaxViewRoot.broadcastEventsForPhase(AjaxViewRoot.java:304) at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:261) at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:474) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 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:235) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) 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:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Thread.java:662) Caused by: org.jboss.util.NestedSQLException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57f572:74e:4f164e7f:3db6 status: ActionStatus.ABORTING >; - nested throwable: (javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57f572:74e:4f164e7f:3db6 status: ActionStatus.ABORTING >) at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:95) at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:46) at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446) ... 103 more Caused by: javax.resource.ResourceException: Transaction is not active: tx=TransactionImple < ac, BasicAction: -3f57f572:74e:4f164e7f:3db6 status: ActionStatus.ABORTING > at org.jboss.resource.connectionmanager.TxConnectionManager.getManagedConnection(TxConnectionManager.java:370) at org.jboss.resource.connectionmanager.BaseConnectionManager2.allocateConnection(BaseConnectionManager2.java:496) at org.jboss.resource.connectionmanager.BaseConnectionManager2$ConnectionManagerProxy.allocateConnection(BaseConnectionManager2.java:941) at org.jboss.resource.adapter.jdbc.WrapperDataSource.getConnection(WrapperDataSource.java:89) ... 105 more 2012-01-18 11:54:48,062 ERROR [org.testuploaddata.bean.TestUploadData] (http-127.0.0.1-8080-2) Err: org.hibernate.exception.GenericJDBCException, Mess: Cannot open connection На счёт хибернейт не может подключиться: я же в первом посту как раз писал, что список объектов эдак до 6000 сохраняется нормально. Поэтому подключение есть. Дык и после ошибки программа продолжает нормально работать с БД. Проблема как раз: 1. Не сохраняются большие списки объектов (порядок выше 4000-10000 гарантированный обвал) 2. Не происходит промежуточного сохранения после flush, commit. Т.е. после ошибки таблицы в базе пусты. Нет ошибки - всё попадает в базу. А seam упоминался в качестве описания среды - есть у него свои особенности. Непосредственно он не виноват, понятно, но и он создаёт среду выполнения приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2012, 11:20:33 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37619347&tid=2132809]: |
0ms |
get settings: |
12ms |
get forum list: |
23ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
57ms |
get topic data: |
17ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
2ms |
| others: | 345ms |
| total: | 547ms |

| 0 / 0 |
