Versionshinweise zu Sun GlassFish Enterprise Server v3

Konfigurationsproblem des EJB-Zeitgeberdienstes für MySQL (Problem 11428)

Beschreibung

Erstellen und Speichern des EJB-Timers als Benutzer in MySQL ist möglich, aber beim Konfigurieren des EJB-Zeitgeberdienstes für MySQL tritt folgender Ausnahmefehler auf (SQLException beim Ausführen der Anweisung):


"CREATE TABLE EJB__TIMER__TBL (TIMERID
VARCHAR(255) NOT NULL, BLOB BLOB(64000), INITIALEXPIRATIONRAW BIGINT, SCHEDULE
VARCHAR(255), INTERVALDURATION BIGINT, OWNERID VARCHAR(255), STATE INTEGER,
LASTEXPIRATIONRAW BIGINT, PKHASHCODE INTEGER, CREATIONTIMERAW BIGINT,
CONTAINERID BIGINT, PRIMARY KEY (TIMERID))":
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in
your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'BLOB BLOB(64000), INITIALEXPIRATIONRAW BIGINT,
SCHEDULE VARCHAR(255), INTERVALDU' at line 1|#] 

Weitere Informationen finden Sie im Problembericht unter .

Abhilfe

Vergewissern Sie sich, dass der für den Zeitgeber-Pool angegebene datasource-classname eine XA-DataSource darstellt.

Für MySQL spezifische Schritte:

  1. Entpacken Sie glassfishv3/glassfish/lib/install/applications/ejb-timer-service-app.war.

  2. Fügen Sie Folgendes zu WEB-INF/classes/__ejb_timer_mappings.xml nach <persistence-unit-metadata> hinzu:

    <persistence-unit-defaults>
    <delimited-identifiers/>
    </persistence-unit-defaults>
  3. Verpacken Sie die Datei WEB-INF/classes/__ejb_timer_mappings.xml neu.

  4. (Dieser Schritt ist nur erforderlich, wenn die aktuelle Installation den EJB-Zeitgeberdienst bereits verwendet hat.) Erstellen Sie EJB__TIMER__TBL manuell in der Datenbank und verwenden Sie dabei diese Anweisung:

    CREATE TABLE `EJB__TIMER__TBL` (`TIMERID` VARCHAR(255) NOT NULL,
    `BLOB` BLOB(64000), `INITIALEXPIRATIONRAW` BIGINT, `SCHEDULE` VARCHAR(255),
    `INTERVALDURATION` BIGINT, `OWNERID` VARCHAR(255), `STATE` INTEGER,
    `LASTEXPIRATIONRAW` BIGINT, `PKHASHCODE` INTEGER, `CREATIONTIMERAW` BIGINT,
    `CONTAINERID` BIGINT, PRIMARY KEY (`TIMERID`))