能夠以使用者身份在 MySQL 中建立和儲存 EJB 計時器,但是,在嘗試為 MySQL 配置 EJB 計時器服務時,出現下列異常 (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|#] |
如需更多資訊,請參閱問題報告。
確定為計時器集區指定的 datasource-classname 代表 XA DataSource。
MySQL 特定步驟:
解壓縮 glassfishv3/glassfish/lib/install/applications/ejb-timer-service-app.war。
將下列內容增加至 WEB-INF/classes/__ejb_timer_mappings.xml 中的 <persistence-unit-metadata> 之後:
<persistence-unit-defaults> <delimited-identifiers/> </persistence-unit-defaults>
重新封裝 WEB-INF/classes/__ejb_timer_mappings.xml 檔案。
(只有在目前安裝已使用 EJB 計時器服務時,才需要此步驟。)使用此 create 陳述式,在資料庫中手動建立 EJB__TIMER__TBL:
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`))