Таблица / представление 'EJB__TIMER__TBL' не существует - PullRequest
3 голосов
/ 06 декабря 2010

У меня есть приложение, которое работает на Glassfish 3.0.1.Я уже успешно установил его в нескольких случаях, но сейчас я пытаюсь настроить новый сервер.Глядя на журнал, сначала развертывание проходит нормально, но потом я получаю следующее:

 [#|2010-12-06T17:53:38.020+0000|WARNING|glassfish3.0.1|org.eclipse.persistence.session.file:/opt/sun/glassfish/glassfish/domains/domain1/applications/ejb-timer-service-app/WEB-INF/classes/___EJB__Timer__App|_ThreadID=31;_ThreadName=Thread-1;|
Local Exception Stack: 
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.0.1.v20100213-r6600): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: Table/View 'EJB__TIMER__TBL' does not exist.
Error Code: 30000
Call: SELECT TIMERID, BLOB, INITIALEXPIRATIONRAW, SCHEDULE, INTERVALDURATION, OWNERID, STATE, LASTEXPIRATIONRAW, PKHASHCODE, CREATIONTIMERAW, CONTAINERID FROM EJB__TIMER__TBL WHERE (((CONTAINERID = ?) AND (OWNERID = ?)) AND (STATE = ?))
bind => [84650008375328779, server, 0]
Query: ReadAllQuery(name="findTimersByContainerAndOwnerAndState" referenceClass=TimerState sql="SELECT TIMERID, BLOB, INITIALEXPIRATIONRAW, SCHEDULE, INTERVALDURATION, OWNERID, STATE, LASTEXPIRATIONRAW, PKHASHCODE, CREATIONTIMERAW, CONTAINERID FROM EJB__TIMER__TBL WHERE (((CONTAINERID = ?) AND (OWNERID = ?)) AND (STATE = ?))")
    at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:687)
    at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:530)
    at org.eclipse.persistence.sessions.server.ServerSession.executeCall(ServerSession.java:529)
    at org.eclipse.persistence.internal.sessions.IsolatedClientSession.executeCall(IsolatedClientSession.java:133)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:205)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:191)
    at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:
 [snip]

Все свойства для пула соединений __TimerPool имеют значения по умолчанию (поэтому он использует встроенный драйвер Derby),Насколько я могу судить, настройки такие же, как и на других моих серверах, так почему же он не работает на этом сервере?копирование базы данных таймера из рабочего экземпляра Glassfish (находится по адресу $GLASSFISH_HOME/glassfish/domains/domain1/lib/databases/ejbtimer).Я все еще хотел бы знать, что вызвало эту проблему.

Странно то, что мое приложение использует таймеры, но ни один из них не является постоянным (или, по крайней мере, так быть не должно).Так что нет никаких причин, почему Glassfish даже смотрит на эту базу данных, верно?

1 Ответ

0 голосов
/ 20 октября 2011

Это случилось со мной, когда я перезаписал эти файлы, когда GF все еще работает, скажем, как часть неудачного обновления. Решение, которое я нашел, было таким же, как и вы: выключить работающий GF и скопировать файлы в <gfhome>/domains/domain1/lib/database.

...