Das ist, denke ich, weniger ein Problem des JDBC sondern eher ein Problem der verwendeten SQL's.
Werden Prepared-Statements verwendet ?
Werden Parameter-Marker "?" verwendet ?
Existieren die richtigen Zugriffswege Where-/Group-/Order-/Join-Bestimmungen ?
Ist die Verbindung (Connection) permanent offen ?

Da bei HTTP-Zugriffen eine Verbindung zur AS/400 ggf. immer wieder neu aufgebaut werden muss, ggf. auch für jeden einzelnen SQL, nützt auch ein anderer Treiber nichts.
Prüfe mal, ob man Connection-Pooling (über den Server) verwenden bzw. einrichten kann.
Dann wird eine geöffnete Verbindung nicht immer sofort geschlossen sondern kann ggf. wiederverwendet werden.
Das beschleunigt den Verbindungsaufbau, die ODP's auf der AS/400 bleiben ggf. geöffnet, usw. usw.