У нас есть приложение, соединяющееся с DB2 в z / OS, и через некоторое время кажется, что на стороне мэйнфрейма наблюдается некоторый лимит ресурсов. Поскольку мы используем BIRT, кажется, что единственный контроль, который мы имеем над кодом JDBC, - это разделы в самом URL. у нас нет прямого контроля Java над соединением или операторами (за исключением, конечно, самого SQL), хотя это может быть возможно при использовании Javascript в дизайне отчета. Таким образом, мы можем включить отладку примерно так:
jdbc:db2://machine.com:1234/INSTANCE:traceFile=c:/db2.txt;traceLevel=-1;
В конечном итоге приложение, использующее JDBC, просто остановится, и в файл журнала больше не будет записываться никаких данных. Выполнение TSO NETSTAT
на мэйнфрейме показывает около 50 сеансов в состоянии ESTABLISHED
.
Теперь мы знаем, что это проблема на стороне мэйнфрейма, поскольку, когда это происходит, нет JDBC-соединение с этим экземпляром будет работать (с любого клиента). В этот момент мы должны перезапустить базу данных, чтобы продолжить.
Я погуглил довольно много вещей, некоторые из которых, кажется, указывают на то, что вам может потребоваться совершить запросов , прежде чем закрыть сессию. Возможно, сеансы остаются открытыми, потому что в коде закрытия BIRT что-то не так (по крайней мере, с точки зрения того, что ожидает DB2).
Кто-нибудь испытывал что-либо подобное раньше? Как ты это исправил (если вообще)? Есть ли способ решить эту проблему, используя только разделы URL JDBC или код Javascript в дизайне отчета?
FWIW, мы используем DB2 9.1 и BIRT 2.2.1.