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 데이터 소스를 나타내도록 해야 합니다.
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`))