Ich habe eine Anwendung, die auf Glassfish 3.0.1 ausgeführt wird. Ich habe es bereits erfolgreich in einigen Fällen installiert, aber jetzt versuche ich, einen neuen Server einzurichten. Mit Blick auf dem Protokoll, geht der Einsatz zunächst in Ordnung, aber dann bekomme ich diese:Tabelle/View 'EJB__TIMER__TBL' existiert nicht
[#|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]
alle Eigenschaften für den __TimerPool
Verbindungspool der Standardwerte haben (so verwendet er den integrierten Derby-Treiber). Soweit ich das beurteilen kann, sind die Einstellungen die gleichen wie bei meinen anderen Servern - warum scheitert es an dieser Stelle?
EDIT
konnte ich es durch Kopieren der Timer DB aus einer Arbeits Instanz von Glassfish (unter $GLASSFISH_HOME/glassfish/domains/domain1/lib/databases/ejbtimer
) arbeiten zu lassen. Ich würde immer noch gerne wissen, was dieses Problem verursacht hat.
Die seltsame Sache ist, meine Anwendung verwendet Timer, aber keiner von ihnen sind hartnäckig (oder zumindest sollten sie nicht sein). Es gibt also keinen Grund, warum Glassfish diese DB überhaupt betrachtet, oder?