La création et le stockage du service d'horloge EJB dans MySQL sont possibles en tant qu'utilisateur, mais une exception est renvoyée lors de la tentative de configuration du service d'horloge EJB pour MySQL(déclaration d'exécution SQLException ) :
"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|#] |
Pour plus d'informations, reportez-vous à Issue report.
Assurez-vous que le nom de classe de source de données spécifié pour le pool d'horloge représente une source de données XA.
Étapes MySQL spécifiques :
Décompressez le fichier glassfishv3/glassfish/lib/install/applications/ejb-timer-service-app.war .
Ajoutez la chaîne suivante à WEB-INF/classes/__ejb_timer_mappings.xml après <persistence-unit-metadata>:
<persistence-unit-defaults> <delimited-identifiers/> </persistence-unit-defaults>
Compressez de nouveau le fichier WEB-INF/classes/__ejb_timer_mappings.xml.
Cette étape est requise uniquement si l'installation actuelle a déjà utilisé le service d'horloge EJB. Créez manuellement EJB__TIMER__TBL dans la base de données en utilisant cette déclaration de création :
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`))