본문 바로가기

Back-End/ProObject

DBSessionCreateFail Error

'DBSessionCreateFail' 로 구글 검색을 하면 단 한건의 검색결과도 나오지 않는다!

그래서 작성했다.

 

티베로에서는 DB에 접근하기 위해 DO Factory를 사용한다.

그런데 가끔 DBSessionCreateFail 이란 오류가 뜨면서 DOF에서 오류가 난다.

 

에러 로그를 보면 DBDataObjectFactory 안 라인에서 오류가 난다고 나온다.

때문에 에러로그를 보고 원인을 파악하기 쉽지 않다.

 

오류 원인은 DOF를 new할때 argument로 DB jndi명을 넘겨주었기 때문이다.

(단, ProObject 버전에 따라 오류가 나지 않을 수 있다.)

 

오류 나는 이유는 @DataSource로 설정된 Dofactory 변수를 new 할때 아래와 같이 "ptask"를 넘겨줬기 때문이다.

 

"ptask"를 빼주면 오류는 발생하지 않는다.

----------------------------------------------------------------------------

원인은 알고보니 다른데 있었다.

 

proobject studio는 A서버에 dbio_config.xml을 참고하고 있다

 

내가 서비스를 call하는 서버는 B서버에 dbio_config.xml을 참고하고 있었는데

B 서버에는 ptask가 등록되어 있지 않았다.

 

실제로 @DataSource(name="ptask") 어노테이션은 런타임에서 영향이 없는 것 같다.

실제로 dbio_config에 jndi를 통해 연결을 요청하는 것은 new의 인풋 args의 값에 영향을 받는 것 같다.

ex) new DOFPTaskChannel("ptask")