2016-08-01 4 views
-1

Вызванный: java.lang.StackOverflowError на java.lang.Integer.valueOf (Integer.java:844) в com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:430) на com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445) на com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445) на ком .ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445) на com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445) в com.ibm.websphere.rsadapter.DB2DataStoreHel per.findMappingClass (DB2DataStoreHelper.java:445) на 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) в com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445) вJSR-352: Stackoverflow ошибка в DB2DataStoreHelper.findMappingClass

.... ....

Этот com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445) продолжается до тех пор, пока не будет stackoverflow e rror. Ошибка возникает, когда я вызываю executeBatch() в Writers writeItems(), поэтому я не уверен, где и почему именно это происходит.

Этот вопрос задан 3 года назад пользователем, столкнувшимся с аналогичной проблемой. Но ответов нет, и повторный запуск не помог.

Infinite loop in DB2 JDBC driver

+0

Не могли бы вы разместить пример кода? –

+0

Как выглядит нижняя часть стека? т.е. набор вызовов, который получает код в бесконечный цикл findMappingClass(). –

+0

Остальные вызовы по существу таковы: тот же com.ibm.websphere.rsadapter.DB2DataStoreHelper.findMappingClass (DB2DataStoreHelper.java:445 сто раз, а затем writeItems () строка java 126. Этот номер строки, где я делаю Statement.executeBatch() –

ответ

0

Это выглядит как ошибка с тем, как становится создан SQLException.

Что происходит в DB2DataStoreHelper.findMappingClass() в вашем сценарии эффективно это:

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); 
} 

Так что если у вас есть 2 или более SQLExceptions, которые создают цикл, такие как:

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

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

тогда ваше исключение недействителен, потому что он создает цикл. Поэтому любой код, который пытается обработать цепочку SQLException, будет работать в бесконечном цикле, как вы наблюдаете.

Просмотрите свой код приложения, чтобы убедиться, что в каких-либо из ваших исключений нет циклов.

Смежные вопросы