我有两个Solaris服务器,每个服务器都安装了Glassfish 3.1.1(Build 12)和Java 1.6.0_27.Glassfish服务器似乎功能齐全,但我无法部署利用EJB Timer Service的应用程序.默认情况下,Timer Service依赖于在默认"__TimerPool"连接池中创建的表"EJB_ TIMER _TBL"来存储状态信息.在一台服务器上,错误是:
java.sql.SQLException:对于只读连接,用户或数据库,不允许更改SQL数据.
在另一台服务器上,错误是:
ERROR 40XL1:在请求的时间内无法获得锁定
我原以为这个问题与文件权限有关.但是我已经查看了Java和Glassfish安装的文件权限和所有权,包括"domains/domain1/lib/databases/ejbtimer"下的derby数据库文件,它们与我没有遇到此问题的其他Solaris服务器上的相同.
您是否有任何想法会导致Derby数据库在全新的Glassfish和Java安装中"只读"或"锁定"? 我知道这里可能有两个不同的原因,但是两个服务器上的相同安装步骤同时出现了两个原因.
以下是Glassfish server.log的堆栈跟踪的更多部分:
锁定堆栈:
[#| 2011-10-07T17:35:21.739 + 0000 |警告| glassfish3.1.1 | javax.enterprise.system.container.ejb.com.sun.ejb.containers | _ThreadID = 10; _ThreadName =线程2; | EJB5108:无法初始化EJB Timer Service.可能的原因是未正确配置计时器资源,尚未启动数据库,或尚未创建计时器数据库表.来自com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5091)的com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5193)中的javax.ejb.EJBException ...
通过引起:异常[的EclipseLink-4002](Eclipse持久服务- 2.3.0.v20110604-r9504):org.eclipse.persistence.exceptions.DatabaseException内部异常:java.sql.SQLTransactionRollbackException:一个锁不能的时间内获得请求错误代码:30000电话:SELECT "的timerId", "的applicationID", "BLOB", "数据筒", "CREATIONTIMERAW", "INITIALEXPIRATIONRAW", "INTERVALDURATION", "LASTEXPIRATIONRAW", "OWNERID", "PKHASHCODE","时间表","状态"来自"EJB_ TIMER _TBL"WHERE(("OWNERID"=?)AND("STATE"=?))bind => [2个参数绑定]查询:ReadAllQuery(name ="findTimersByOwnerAndState"referenceClass = TimerState sql ="SELECT "的timerId", "的applicationID", "BLOB", "数据筒", "CREATIONTIMERAW", "INITIALEXPIRATIONRAW", "INTERVALDURATION", "LASTEXPIRATIONRAW", "OWNERID", "PKHASHCODE", "SCHEDULE", "STATE" FROM "EJB_ TIMER _TBL" WHERE(( "OWNERID"=?)AND( "国家"=?))")在org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java :333)org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:644)...
引发者:java.sql.SQLException:在org.apache.derby.impl.jmplc.SQLExceptionFactory40的org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(未知来源)请求的时间内无法获得锁定. …