2014-12-10 2 views

답변

0

WildFly와 같은 엔터프라이즈 애플리케이션 서버는 JTA를 독점적으로 사용합니다. Java EE 트랜잭션 관리 표준에서 그러한 요구 사항을 충족시키기 때문입니다.

자원 로컬 트랜잭션은 수동 JDBC 연결 처리를위한 것이며, AS의 목적은 사용자를 대신하여 자원을 관리하도록하는 것입니다.

따라서 WildFly 또는 다른 AS에서 리소스 로컬 트랜잭션을 사용하지 않아야합니다. 컨테이너가 이미 제공 한 JTA DataSource를 사용해야합니다.

+0

"자원 로컬 트랜잭션은 수동 JDBC 연결 처리를위한 것입니다."올바른 진술로 보이지 않습니다. 리소스 로컬 트랜잭션은 단일 리소스 (데이터베이스) 만 있음을 의미합니다. 대부분의 경우 트랜잭션 리소스가 하나 뿐이지 만 수동 JDBC 연결 처리가 있어야 함을 의미하지는 않습니다. 예를 들어 타사 연결 풀 (예 : tomcat jdbc 풀 또는 c3po)을 사용할 수 있습니다. 또한 단일 리소스로 JTA 데이터 소스를 가질 수 있습니다. 트랜잭션 관리자는 2 단계 커밋이 필요없는 단일 리소스에 대한 최적화를 수행합니다. – Shailendra

+0

java.sql.Connection.commit() 및 java.sql.Connection.rollback()을 통해 트랜잭션을 관리하는 경우 어떻게 생각하십니까? 그래서 당신이나 당신이 의존하는 다른 프레임 워크가 트랜잭션 경계를 설정하기 위해 이러한 메소드를 호출해야하기 때문에 단일 연결에 바인딩되어 있습니다. JTA의 경우 XAConnection이 사용되고 있습니다. –

+0

맞습니다.하지만 제가하려고하는 요점은 하나 이상의 리소스가 있고 XA 리소스가있을 때 JTA가 API이고 XA가 그림으로 제공된다는 것입니다. JTA는 단일 리소스 (리소스 로컬)와 함께 사용할 수 있습니다. – Shailendra

관련 문제