2016-08-09 67 views
1

Ich versuche, C3P0 Verbindungspools für IBM DB2 Version 10.5.5 Fixpack 5 mit Java 8 zu verwenden.db2 Treiberfehler, aber in der Lage, Verbindung herzustellen

Anfang war ich immer this error so änderte ich jar db2jcc4.jar aber ich immer noch unter Fehlern in der Konsole erhalten,

1350 [C3P0PooledConnectionPoolManager[identityToken->2x0fal9iui9mpmdj6im3|c2e1f26]-HelperThread-#1] INFO com.mchange.v2.c3p0.SQLWarnings – Origination unknown: [10228][11541][4.11.77] Security exceptions occurred while loading driver. ERRORCODE=4223, SQLSTATE=null 
com.ibm.db2.jcc.am.SqlWarning: Origination unknown: [10228][11541][4.11.77] Security exceptions occurred while loading driver. ERRORCODE=4223, SQLSTATE=null 
    at com.ibm.db2.jcc.am.gd.b(gd.java:207) 
    at com.ibm.db2.jcc.am.gd.b(gd.java:258) 
    at com.ibm.db2.jcc.am.jb.a(jb.java:887) 
    at com.ibm.db2.jcc.am.lb.a(lb.java:574) 
    at com.ibm.db2.jcc.am.lb.<init>(lb.java:555) 
    at com.ibm.db2.jcc.t4.b.<init>(b.java:305) 
    at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:214) 
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:460) 
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) 
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) 
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) 
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) 
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138) 
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125) 
    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) 
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870) 
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) 
Caused by: java.security.PrivilegedActionException: java.lang.ClassNotFoundException: sun.io.ByteToCharConverter 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.ibm.db2.jcc.am.jb.r(jb.java:873) 
    at com.ibm.db2.jcc.am.jb.<clinit>(jb.java:484) 
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:117) 
    ... 9 more 
Caused by: java.lang.ClassNotFoundException: sun.io.ByteToCharConverter 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at com.ibm.db2.jcc.am.jg.run(jg.java:19) 
    ... 13 more 
1350 [C3P0PooledConnectionPoolManager[identityToken->2x0fal9iui9mpmdj6im3|c2e1f26]-HelperThread-#0] INFO com.mchange.v2.c3p0.SQLWarnings – Origination unknown: [10228][11541][4.11.77] Security exceptions occurred while loading driver. ERRORCODE=4223, SQLSTATE=null 
com.ibm.db2.jcc.am.SqlWarning: Origination unknown: [10228][11541][4.11.77] Security exceptions occurred while loading driver. ERRORCODE=4223, SQLSTATE=null 
    at com.ibm.db2.jcc.am.gd.b(gd.java:207) 
    at com.ibm.db2.jcc.am.gd.b(gd.java:258) 
    at com.ibm.db2.jcc.am.jb.a(jb.java:887) 
    at com.ibm.db2.jcc.am.lb.a(lb.java:574) 
    at com.ibm.db2.jcc.am.lb.<init>(lb.java:555) 
    at com.ibm.db2.jcc.t4.b.<init>(b.java:305) 
    at com.ibm.db2.jcc.DB2SimpleDataSource.getConnection(DB2SimpleDataSource.java:214) 
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:460) 
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175) 
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220) 
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206) 
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203) 
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138) 
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125) 
    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44) 
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870) 
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696) 
Caused by: java.security.PrivilegedActionException: java.lang.ClassNotFoundException: sun.io.ByteToCharConverter 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.ibm.db2.jcc.am.jb.r(jb.java:873) 
    at com.ibm.db2.jcc.am.jb.<clinit>(jb.java:484) 
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:117) 
    ... 9 more 
Caused by: java.lang.ClassNotFoundException: sun.io.ByteToCharConverter 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Unknown Source) 
    at com.ibm.db2.jcc.am.jg.run(jg.java:19) 
    ... 13 more 

Auch wenn diese Fehler in Protokollen vorhanden sind, mein Stand-alone-Java App der Lage ist, zu machen Verbindungen zur Datenbank und Ergebnisse erhalten, dh SELECT-Abfrage wird erfolgreich ausgeführt.

Wie Sie diese Verwirrung beheben?

Antwort

1

Die Stack-Traces, die Sie sehen, stammen von SqlWarning-Objekten, was wahrscheinlich bedeutet, dass es sich nicht um schwerwiegende oder schwerwiegende Probleme handelt. Das scheinbare Problem java.lang.ClassNotFoundException: sun.io.ByteToCharConverter scheint ziemlich seltsam. Aber da es eher als Warnung als als Ausnahme ausgelöst wird, hat sich der Treiber wahrscheinlich von dem Problem erholt, weshalb Ihre Anwendung zu funktionieren scheint.

JDBC-Verbindungen dürfen a chain of SQLWarnings speichern, die von allem herrühren können, aber von den meisten Anwendungen einfach ignoriert werden. (Die meisten JDBC-Programmierer wissen nicht, dass sie überhaupt existieren.)

c3p0 ist extrem neurotisch, wenn es regelmäßig nach Connection-Warnungen sucht, sie protokolliert und dann löscht, sodass Benutzer von Connections keine Warnungen von früheren Clients sehen . Die Protokollierung von Warnungen kann jedoch lästig sein. Wenn Sie möchten, können Sie sie leicht unterdrücken (oder in eine separate Datei umleiten oder was auch immer). c3p0 protokolliert Warnungen an einen speziellen Logger namens com.mchange.v2.c3p0.SQLWarnings. In der Konfigurationsdatei für die von Ihnen verwendete Protokollierungsbibliothek können Sie diese Ausgabe unterdrücken, indem Sie die Ebene dieses Protokollierers auf WARNING oder höher setzen.

(A Bit verwechselbar SQLWarnings bei INFO nicht WARNING angemeldet sind. Da sie in der Regel Informationen über die Zustände repräsentieren bereits erholt aus, der Fahrer Autoren verstehen, dass die meisten Entwickler nie sehen, sie auf das Niveau der WARNING nicht substanziell steigen. So das Ausfiltern von Nachrichten von com.mchange.v2.c3p0.SQLWarnings bei INFO und darunter ist ausreichend, um die Warnungen zu beruhigen.Wenn Sie den zuständigen Code sehen möchten, ist es here.)

+0

Vielen Dank !! Lass mich sehen, ob ich diese in Logs unterdrücken kann. –

+0

Durch das Hinzufügen dieser beiden Zeilen in der Datei c3p0.properties wurden diese Protokolle deaktiviert: 'com.mchange.v2.log.FallbackMLog.DEFAULT_CUTOFF_LEVEL = WARNUNG com.mchange.v2.log.MLog = com.mchange.v2.log.FallbackMLog' –

+0

das würde es tun! aber es unterdrückt alle INFO-Level-Logging (nicht nur für 'com.mchange.v2.c3p0.SQLWarnings'), und erzwingt die Protokollierung nur auf Standardfehler. Wenn sich Ihre Anwendung bei slf4j oder log4j oder java.util.logging anmeldet, sollten Sie c3p0 am selben Ort anmelden und das Protokoll nur einzeln unterdrücken. (Wenn Ihre Anwendung klein ist und keine vollständige Protokollierungsbibliothek verwendet, Protokollierung bei WARNING auf Standardfehler, was Sie gerade tun, kann in Ordnung sein.) –