2016-08-01 19 views
-1

에서 유래 에러 COM에서 (DB2DataStoreHelper.java:430) com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445)에서 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445)에서 com.ibm.websphere.rsadapter.DB2DataStoreHel에서 .ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445) com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445)에서 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass에서 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445) 에서 per.findMappingClass (DB2DataStoreHelper.java:445) (DB2DataStoreHelper.java:445)JSR-352 : com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass에서 java.lang.Integer.valueOf (Integer.java:844)에 java.lang.StackOverflowError의 : 의해 발생 DB2DataStoreHelper.findMappingClass

에서 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445) 에서 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445) 에서 .... ....

이 com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445)는 스택 오버플로 e가 발생할 때까지 계속 발생합니다 rror. 이 오류는 필자가 writeItems()에서 executeBatch()을 호출 할 때 발생합니다. 그래서 어디에서 또는 정확히 그 일이 발생하는지 확실하지 않습니다.

이 질문은 3 년 전에 비슷한 문제가있는 사용자가 물었습니다. 그러나 응답이 없으며 재실행이 도움이되지 않았습니다.

Infinite loop in DB2 JDBC driver

+0

몇 가지 샘플 코드를 게시 할 수 있습니까? –

+0

스택의 맨 아래 부분은 어떻게 생겼습니까? 즉 findMappingClass() 무한 루프에 코드를 가져 오는 호출 집합 –

+0

나머지 호출은 본질적으로 동일합니다. com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445 백 번 누른 다음 writeItems()) line java 126.이 줄 번호는 Statement.executeBatch()를 수행하는 곳입니다. –

답변

0

이것은 예외 : SQLException이 만들어지고 어떻게 버그처럼 보인다. 다음

SQLException a = new SQLException(); 
SQLException b = new SQLException(); 

a.setNextException(b); 
b.setNextException(a); 

하여 예외 : 당신이 같은 사이클을 만드는 2 개 이상 된 SQLException을, 그래서 만약

public Class<?> findMappingClass(SQLException e) { 
    // Check if 'e' is in the error map anywhere, 
    // if it is, return the class. 

    // otherwise, check the next exception in the chain 
    SQLException next = e.getNextException(); 
    return findMappingClass(next); 
} 

:

은 무엇 시나리오에서 DB2DataStoreHelper.findMappingClass()에서 어떤 일이 일어나고 효과적으로이

입니다 사이클을 생성하기 때문에 유효하지 않습니다. 따라서 SQLException 체인을 처리하려고 시도하는 모든 코드는 관찰하는 동안 무한 루프로 실행됩니다.

응용 프로그램 코드를 검토하여 예외 상황에서 사이클이 생성되지 않았는지 확인하십시오.