MySQL 데이터베이스가있는 Glassfish 서버에서 JSF 프로그램을 개발 중입니다. 나는 현재 다음과 같은 단순한 코드 버전의 Singleton LocalBean을 가지고있다.스케쥴에서의 JTA UserTransaction
@Resource
private UserTransaction trans;
@Schedule(second = "30", minute = "*", hour = "*", dayOfWeek = "*", dayOfMonth = "*", month = "*", year = "*", info = "subTimer")
private void scheduledTimeout(final Timer t)
{
InsertIntoDatabase();
}
private void InsertIntoDatabase()
{
trans.begin();
trans.doTransaction();
trans.commit();
}
일정이 없으면 코드가 정상적으로 작동한다. 불행히도, 나는 매일 MySQL 데이터베이스에 수표를 넣고 가능하면 정보를 삽입해야합니다. 내가 몇 가지 연구를 시도
SEVERE: Transaction commit error
java.lang.IllegalStateException: Operation not allowed.
at com.sun.enterprise.transaction.UserTransactionImpl.checkUserTransactionMethodAccess(UserTransactionImpl.java:146)
그리고 당신이 타이머 또는 예약 이벤트 내에서 UserTransactions를 실행할 수 있음을 볼 수 있지만, 나는 일정에 따라 트랜잭션을 실행하는 방법이 필요합니다 : 나는 이것을라는 오류를 받고 있어요 그리고 어떻게 진행해야할지 모르겠습니다.
ejb에'@TransactionManagement (TransactionManagementType.BEAN)'주석이 붙어 있습니까? CMT를 사용하도록 설정된 경우 이러한 (분쟁 경계 설정) 방법은 허용되지 않습니다. 이 페이지의 맨 마지막 부분 인 http://docs.oracle.com/javaee/6/tutorial/doc/bncij.html을보십시오. –
아니요, 지금 거래 관리 주석이 없습니다. – gdawgrancid