db4o - DatabaseClosedException - PullRequest
       4

db4o - DatabaseClosedException

0 голосов
/ 21 июня 2011

Я пытаюсь сохранить сущность с помощью db4o в тестовом примере arquillian и получаю исключение DatabaseClosedException:


Набор тестов: com.walterjwhite.address.api.datastore.TestAddressDatastore

Выполнено тестов: 1, сбоев: 0, ошибок: 1, пропущено: 0, истекло время: 2,149 с <<< НЕИСПРАВНОСТЬ!test_save (com.walterjwhite.address.api.datastore.TestAddressDatastore) Прошедшее время: 0,68 с <<< ОШИБКА!com.db4o.ext.DatabaseClosedException в com.db4o.internal.ObjectContainerBase.checkClosed (ObjectContainerBase.java:303) в com.db4o.internal.ObjectContainerBase.checkTransaction (ObjectContainerBase.java:331) в com.b.basTopLevelStore (ObjectContainerBase.java:412) в com.db4o.internal.ObjectContainerBase.storeInternal (ObjectContainerBase.java:1602) в com.db4o.internal.ObjectContainerBase.store (ObjectContainerBase.jternaldO4) at4).store (ObjectContainerBase.java:1576) в com.db4o.internal.ObjectContainerSession.store (ObjectContainerSession.java:360) в com.walterjwhite.datastore.api.AbstractDatastore.save (AbstractDatastore.java:79jwhite).address.api.datastore.org $ JBoss $ приварку $ боба 0b7a0e6e-330E-4c1b-8c9e-1e90ab004c80 $ баночка-ManagedBean-class_com $ walterjwhite $ адрес $ апи $ хранилищу $ AddressDatastore _ $$ _ WeldClientProxy.save (орг $ JBoss $ приварку$ боба 0b7a0e6e-330E-4c1b-8c9e-1e90ab004c80 $ баночка-ManagedBean-class_com $ walterjwhite$ address $ api $ datastore $ AddressDatastore _ $$ _ WeldClientProxy.java) на com.walterjwhite.address.api.datastore.TestAddressDatastore.test_save (TestAddressDatastore.java:67) в sun.reflect.NativeMethodAccessrefle.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Mkej.jj.jjjin.model.FrameworkMethod $ 1.runReflectiveCall (FrameworkMethod.java:44) в org.junit.internal.runners.model.ReflectiveCallable.run (ReflectiveCallable.java:15) в org.junit.runners.model.hoho.MrakeJava: 41) в org.jboss.arquillian.junit.Arquillian $ 6 $ 1.invoke (Arquillian.java:259) в org.jboss.arquillian.impl.execution.LocalTestExecuter.execute (LocalTestExecuter.java:63) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:616) в org.jboss.sermp.Impl.Implore.invoke (ObserverImpl.java:90) в org.jboss.arquillian.impl.core.EventContextImpl.invokeObservers (EventContextImpl.java:98) в org.jboss.arquillian.impl.core.EventContextImpl.text (mpl.proceed (80) .80) в org.jboss.arquillian.impl.core.ManagerImpl.fire (ManagerImpl.java:126) в org.jboss.arquillian.impl.core.ManagerImpl.fire (ManagerImpl.java:106) в org.jboss.arquillian.impl.core.EventImpl.fire (EventImpl.java:67) в org.jboss.arquillian.impl.client.protocol.local.LocalContainerMethodExecutor.invoke (LocalContainerMethodExecutor.java:50) в org.jboss.lquillian.RemoteTestExecuter.execute (RemoteTestExecuter.java:97) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:616) в org.jboss.arquillian.impl.core.ObserverImpl. ObserverImpl.90) в org.jboss.arquillian.impl.core.EventContextImpl.invokeObservers (EventContextImpl.java:98) в org.jboss.arquillian.impl.core.EventContextImpl.proceed (EventContextImpl.java:80)в org.jboss.arquillian.impl.core.ManagerImpl.fire (ManagerImpl.java:126) в org.jboss.arquillian.impl.core.ManagerImpl.fire (ManagerImpl.java:106) в org.jboss.arquillian.impl.core.EventImpl.fire (EventImpl.java:67) в org.jboss.arquillian.impl.execution.ClientTestExecuter.execute (ClientTestExecuter.java:65) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод).NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Methoss.jj.impl.core.ObserverImpl.invoke (ObserverImpl.java:90) в org.jboss.arquillian.impl.core.EventContextImpl.invokeObservers (EventContextImpl.java:98) в org.jboss.arquillian.implconteore.EventContextImpl.java:80) в org.jboss.arquillian.impl.client.ContainerDeploymentContextHandler.createContext (ContainerDeploymentContextHandler.java:133) в org.jboss.arquillian.impl.client.ContainerDeploymentContextHandler.createTestContext (ContainerDeploymentContextHandler.java:120) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImphoe.jpgDelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:616) в org.jboss.arquillian.impl.core.ObserverImpl.invoke (ObserverImpl.java:90) в org.jillian.impl.core..NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Methoss.jj.impl.core.ObserverImpl.invoke (ObserverImpl.java: 90) atg.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.javajlan.ho.j.: 616) в org.jboss.arquillian.impl.core.ObserverImpl.invoke (ObserverImpl.java:90) в org.jboss.arquillian.impl.core.EventContextImpl.proceed (EventContextImpl.java:87) в org.arquillian.impl.DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (встретилсяhod.java:616) в org.jboss.arquillian.impl.core.ObserverImpl.invoke (ObserverImpl.java:90) в org.jboss.arquillian.impl.core.EventContextImpl.proceed (EventContextImpl.java:).jboss.arquillian.impl.core.ManagerImpl.fire (ManagerImpl.java:126) в org.jboss.arquillian.impl.EventTestRunnerAdaptor.test (EventTestRunnerAdaptor.java:101) в org.jboss.arquillqu.itоцените (Arquillian.java:251) в org.jboss.arquillian.junit.Arquillian $ 4.evaluate (Arquillian.java:214) в org.jboss.arquillian.junit.Arquillian.multiExecute (Arquillian.java:303) в орг.jboss.arquillian.junit.Java: 79)в org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:71) в org.junit.runners.BlockJUnit4ClassRunner.runChild (BlockJUnit4ClassRunner.java:run.jun.run.jp193) в org.junit.runners.ParentRunner $ 1.schedule (ParentRunner.java:52) в org.junit.runners.ParentRunner.runChildren (ParentRunner.java:191) в org.junit.runners.ParentRunner.Runner $.java: 42) в org.junit.runners.ParentRunner $ 2.evaluate (ParentRunner.java:184) в org.jboss.arquillian.junit.Arquillian $ 2.evaluate (Arquillian.java:173) в org.jboss.arquillian.junit.Arquillian.multiExecute (Arquillian.java:303) в org.jboss.arquillian.junit.Arquillian.access $ 300 (Arquillian.java:45) в org.jboss.arquillian.junit.Arquillian $ 3.evaluate (Arquillian.java:187) в org.junit.runners.ParentRunner.run (ParentRunner.java:236) в org.jboss.arquillian.junit.Arquillian.run (Arquillian.java:127) в org.apache.maven.surefire.junit4.JUnitT.Execute (JUnit4TestSet.java: 35) в org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet (JUnit4Provider.java:115) в org.apache.maven.surefire.junit4.JUnit4Provider.invoke (JUnit4Provider.java: 97)NativeMethodAccessorImpl.invoke0 (родной метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) в sun.reflect.DelegatingMethodAccessorImpl.invoke (methodava.tho.jj.jjJava: 616) в org.apache.maven.surefire.booter.ProviderFactory $ ClassLoaderProxy.invoke (ProviderFactory.java:103) в $ Proxy0.invoke (неизвестный источник) в org.apache.maven.surefire.booter.SurefireStarrov.inke(SurefireStarter.java:150) в org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess (SurefireStarter.java:91) в org.apache.maven.surefire.booter.ForkedBooter.main (Forkava:69).1006 * <pre>@Produces protected ObjectServer openServer(ApplicationContext applicationContext) { return (Db4oClientServer.openServer("/tmp/test.db4o", 0)); } @Produces public ObjectContainer getObjectContainer(ObjectServer objectServer) { return (objectServer.openClient()); }

В моем тестовом примере я создаю объектный сервер с файлом в / tmp.Файл создается, контейнер объекта автоматически внедряется через установщик, в противном случае objectContainer будет иметь значение null, и это будет другим исключением.

Я поместил несколько отладочных операторов в код, чтобы убедиться, что метод dispose былне вызывается до окончания вызова магазина, поэтому я могу исключить эту потенциальную проблему.

Что еще мне нужно сделать, чтобы подготовить контейнер?

Спасибо,

Walter

Ответы [ 3 ]

1 голос
/ 21 июня 2011

Видите ли вы файл test.db4o, создаваемый в tmp? Убедитесь, что каталог, в который вы записываете базу данных, существует и доступен для процесса, который пытается его создать.

0 голосов
/ 22 июня 2011

Я понял это ... У меня не было правильной области, указанной на моем бине ... Я написал простое тестовое приложение без Weld / CDI, и оно работало нормально.ObjectServer закрывался почти сразу после его открытия.

После того, как я изменил его на правильную область, которая была одиночной для сервера, он работал.

Вальтер

0 голосов
/ 21 июня 2011

Когда это случалось со мной в прошлом, более ранняя ошибка закрывала базу данных, прежде чем выдается это исключение. Я предлагаю искать другие ошибки до того, как это будет сгенерировано.

...