문제

우리는 Spring 2.5.4/Hibernate 3.2/WebSphere Application Server 6.1.0.17을 사용하고 있습니다. AIX 상자에 응용 프로그램을 배포했습니다. 다음날 들어 오면 응용 프로그램에 로그인하려고합니다. 페이지 에서이 예외를 얻습니다.

Error 500: Request processing failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: could not execute query; nested exception is org.hibernate.exception.JDBCConnectionException: could not execute query

나는 그것을 확인했다 System.out 로그를 작성하고 자세한 내용을 확인하십시오. (로그 서식이 실제로 페이지 레이아웃을 망치고 있었기 때문에 페이스트 빈 사용)


예외를 일으키는 코드의 줄은 다음과 같습니다.

List loginList = getHibernateTemplate().find("from Login  
    where storeId =" + id + " and password ='" + password + "'");

Spring의 ApplicationContext.xml에서 연결을 배선하고 있습니다. 우리는 AS400의 연결이 때때로 떨어지는 것을 알고 있습니다 (그들은 밤새 시스템을 다시 시작할 수 있습니다. 확실하지 않습니다). 그러나 ApplicationContext의 모든 것을 배선 할 때 새 연결을 열고 싶지 않을 것입니다.

이 문제는 DataSource/JNDI 또는 JDBC를 사용하는 것만으로도 발생합니다.

스프링 또는 최대 절전 모드에 추가 할 설정을 아는 사람이 있으므로 연결이 부실한 지 확인하고 그렇다면 떨어 뜨려 새 제품을 만드십시오. 아니면이 문제를 해결하기위한 다른 아이디어가 있습니까? 더 많은 정보/코드가 필요한지 알려주세요.

매우 감사,

크리스

업데이트:

Spring Community Forums의 일부 게시물을 확인했으며 Commons-DBCP로 데이터 소스를 구현하여 'TestwhileIdle'및 'ValidationQuery'와 같은 속성이 있습니다. 앱을 실행하고 AM에서 다시 확인하겠습니다. 결과에 대한 업데이트를 게시합니다.

업데이트#2 :

DBCP-Commons를 사용하는 것은 BasicDatasource 가이 문제를 해결하는 것으로 보이며, 이는 네트워크 문제인 것으로 보입니다. WebSphere는 연결을 풀링했으며 AS400 측면에 네트워크 문제가있는 경우 '부실한'연결을 사용하려고합니다. 시간 간격을 가진 ValidationQuery를 사용하는 것은이 문제를 해결하는 저렴한 (그러나 효율적인) 방법이지만 구성 하에서 WebSphere 측에 더 나은 방법이있을 수 있습니다. 그러나 깨지지 않은 것을 바꾸지 않을 수도 있으므로 이것이 실패 할 때까지 우리의 해결책이 될 것입니다.

도움이 되었습니까?

해결책

아, 그게 내가 말할 것입니다 ... 연결 풀에서 문제를 해결하기 전에 연결을 검증하여 문제를 해결해야합니다. DBCP는 ValidationQuery를 가지고 있으며 Jboss는 또한 비슷한 것을 가지고 있습니다. WebSphere는 연결 풀에 비슷한 것이 있어야한다고 확신합니다. 테스트를 사용하지 않더라도 연결이 유효하지 않은 경우 연결이 유효하지 않은 것으로 나타났습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top