1
서버가 ejb 구성 요소의 서블릿 호출 메소드에서 서블릿으로 http 요청을받습니다.다른 스레드에서 호출 할 때 쿼리 시간 초과
public void ejbMethodVariant1(...) {
//calling stored proc
...
//calling same stored proc
}
public void ejbMethodVariant2(...) {
//calling stored proc
...
Thread t = new Thread(() -> {
//calling same stored proc
});
t.start();
try {
t.join();
} catch (InterruptedException e){
...
}
}
저장된 프로 시저는 항상 동일합니다. "저장된 프로 시저를 호출" 의미 : 데이터 소스
- 얻기 연결이 변형 1에서 호출 문
- 닫기 문
- 닫기 연결
실행 호출 문
변형 2 - 첫 번째 호출이 성공적으로 완료되고 2 분 후에 두 번째로 시간이 초과됩니다 (com.microsoft.sqlserver.jdbc.SQLServerException : 쿼리가 시간 초과되었습니다.). 첫 번째 호출의 연결은 autoCommit = false이고 두 번째 호출의 경우 autoCommit = true입니다.
JEE 사양에 따르면 스레드 생성 및 관리는 ejb에서 허용되지 않습니다. [이 답변] (http://stackoverflow.com/questions/3816286/multithreading-in-a-stateless-session-bean#3816621) 또는 [this] (http://www.oracle.com/technetwork/java)를 참조하십시오. /restrictions-142267.html#threads) –