我正在尝试通过一个 arquillian 测试用例使用 db4o 存储一个实体,并得到一个 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.internal.ObjectContainerBase.checkClosed(ObjectContainerBase.java:303) 处 com.db4o.internal.ObjectContainerBase.checkTransaction(ObjectContainerBase.java:331) 处 com.db4o.internal.ObjectContainerBase 处的 com.db4o.ext.DatabaseClosedException。 asTopLevelStore(ObjectContainerBase.java:412) at com.db4o.internal.ObjectContainerBase.storeInternal(ObjectContainerBase.java:1602) at com.db4o.internal.ObjectContainerBase.store(ObjectContainerBase.java:1584) at com.db4o.internal.ObjectContainerBase .store(ObjectContainerBase.java:1576) 在 com.db4o.internal.ObjectContainerSession.store(ObjectContainerSession.java:
@Produces
protected ObjectServer openServer(ApplicationContext applicationContext)
{
return (Db4oClientServer.openServer("/tmp/test.db4o", 0));
}
@Produces
public ObjectContainer getObjectContainer(ObjectServer objectServer)
{
return (objectServer.openClient());
}
对于我的测试用例,我正在使用 /tmp 中的文件创建一个对象服务器。创建文件后,对象容器会通过 setter 自动注入,否则 objectContainer 将为 null,这将是一个不同的异常。
我在代码中加入了一些调试语句,以确保在 store 调用之后才调用 dispose 方法,这样我就可以排除这个潜在的问题。
我还需要做什么来准备容器?
谢谢,
沃尔特