我刚刚遇到它并且完全被惊呆了:
[#|2012-12-10T14:16:49.663+0100|WARNING|glassfish3.1.1|javax.enterprise.system.core.transaction.com.sun.jts.jtsxa|_ThreadID=165;_ThreadName=Thread-2;|JTS5068: Unexpected error occurred in rollback
org.neo4j.kernel.impl.nioneo.store.UnderlyingStorageException: Unable to write defragged id batch
at org.neo4j.kernel.impl.nioneo.store.IdGeneratorImpl.writeIdBatch(IdGeneratorImpl.java:554)
at org.neo4j.kernel.impl.nioneo.store.IdGeneratorImpl.freeId(IdGeneratorImpl.java:295)
at org.neo4j.kernel.impl.nioneo.store.CommonAbstractStore.freeId(CommonAbstractStore.java:404)
at org.neo4j.kernel.impl.nioneo.xa.WriteTransaction.doRollback(WriteTransaction.java:309)
at org.neo4j.kernel.impl.transaction.xaframework.XaTransaction.rollback(XaTransaction.java:278)
at org.neo4j.kernel.impl.transaction.xaframework.XaResourceManager.rollback(XaResourceManager.java:488)
at org.neo4j.kernel.impl.transaction.xaframework.XaResourceHelpImpl.rollback(XaResourceHelpImpl.java:111)
at com.sun.jts.jta.TransactionState.rollback(TransactionState.java:193)
at com.sun.jts.jtsxa.OTSResourceImpl.rollback(OTSResourceImpl.java:333)
at com.sun.jts.CosTransactions.RegisteredResources.distributeRollback(RegisteredResources.java:1038)
at com.sun.jts.CosTransactions.TopCoordinator.rollback(TopCoordinator.java:2290)
at com.sun.jts.CosTransactions.CoordinatorTerm.commit(CoordinatorTerm.java:420)
at com.sun.jts.CosTransactions.TerminatorImpl.commit(TerminatorImpl.java:250)
at com.sun.jts.CosTransactions.CurrentImpl.commit(CurrentImpl.java:623)
at com.sun.jts.jta.TransactionManagerImpl.commit(TransactionManagerImpl.java:323)
at com.sun.enterprise.transaction.jts.JavaEETransactionManagerJTSDelegate.commitDistributedTransaction(JavaEETransactionManagerJTSDelegate.java:186)
at com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:858)
at com.sun.enterprise.transaction.UserTransactionImpl.commit(UserTransactionImpl.java:208)
............
Caused by: java.nio.channels.ClosedByInterruptException
at java.nio.channels.spi.AbstractInterruptibleChannel.end(AbstractInterruptibleChannel.java:202)
at sun.nio.ch.FileChannelImpl.size(FileChannelImpl.java:299)
at org.neo4j.kernel.impl.nioneo.store.IdGeneratorImpl.writeIdBatch(IdGeneratorImpl.java:530)
... 104 more
我该怎么办,如何从该例外中恢复?
我必须说neo4j在这里使用Glassfish应用服务器中的neo4j jca连接器运行。
因此。我该怎么办?
答案 0 :(得分:1)
java.nio。*中的东西对中断非常敏感,这意味着一旦被中断的线程访问它就会关闭FileChannel。 Neo4j使用FileChannel,这个问题很可能是由于你的环境以这种或那种方式中断线程造成的。
答案 1 :(得分:0)
问题实际上与neo4j无关,而是Glassfish默认为EAR部署的时间有限(不是直接,而是通过用于将命令发送到域的HTTP通道)。
这种暗示是以神秘的日志声明的形式给出的:
[#| 2012-12-10T11:41:49.725 + 0100 |警告| glassfish3.1.1 | com.sun.grizzly.config.GrizzlyServiceListener | _ThreadID = 29; _TreadName = Thread-2; | GRIZZLY0023:中断空闲线程:admin-thread-pool-4848(9)。|#]
快速谷歌搜索告诉我我的EAR部署发生了什么:“application cannot start on ubuntu but starts on windows without any trouble”。因此,我遵循了java.net建议并设置了给定的标志
asadmin set server-config.network-config.protocols.protocol.http-listener-1.http.request-timeout-seconds=-1
错误现已消失。