Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Help] How to use jdbc-perf-logger-driver with JBoss EAP 6.4 #63

Closed
ivanmarban opened this issue Nov 22, 2017 · 2 comments
Closed

[Help] How to use jdbc-perf-logger-driver with JBoss EAP 6.4 #63

ivanmarban opened this issue Nov 22, 2017 · 2 comments

Comments

@ivanmarban
Copy link

Can't figure out how to make jdbc perf logger work with JBoss. Any help would be appreciated.

I've added the driver as module in JBoss, and configured the datasource like this:

<datasources>
	<datasource jta="false" jndi-name="java:/jdbc/DBXX" pool-name="XXDS" enabled="true" use-java-context="true" use-ccm="false" statistics-enabled="true">
		<connection-url>jdbcperflogger:jdbc:oracle:thin:@localhost:1521:XX</connection-url>
		<driver-class>ch.sla.jdbcperflogger.driver.WrappingDriver</driver-class>
		<driver>jdbcperfloggerDriver</driver>
		<pool>
			<min-pool-size>10</min-pool-size>
			<max-pool-size>50</max-pool-size>
			<use-strict-min>true</use-strict-min>
			<flush-strategy>IdleConnections</flush-strategy>
		</pool>
		<security>
			<user-name>XXXX</user-name>
			<password>XXXX</password>
		</security>
		<validation>
			<check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
			<validate-on-match>true</validate-on-match>
			<background-validation>false</background-validation>
		</validation>
		<timeout>
			<blocking-timeout-millis>30000</blocking-timeout-millis>
			<idle-timeout-minutes>5</idle-timeout-minutes>
			<query-timeout>300</query-timeout>
		</timeout>
		<statement>
			<track-statements>false</track-statements>
			<prepared-statement-cache-size>32</prepared-statement-cache-size>
			<share-prepared-statements>false</share-prepared-statements>
		</statement>
	</datasource>
	<drivers>
		<driver name="jdbcperfloggerDriver" module="jdbc.jdbcperflogger"/>
	</drivers>
</datasources>

I'm getting this error:

16:44:01,499 WARNING [ch.sla.jdbcperflogger.driver.WrappingDriver] (JCA PoolFiller) Cannot find driver class oracle.jdbc.OracleDriver for JDBC url jdbc:oracle:thin:@localhost:1521:XX: java.lang.ClassNotFoundException: oracle.jdbc.OracleDriver from [Module "jdbc.jdbcperflogger:main" from local module loader @f65612 (finder: local module finder @11d617d (roots: C:\servers\jboss-eap-6.4\modules,C:\servers\jboss-eap-6.4\modules\system\layers\base))] at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) [jboss-modules.jar:1.3.6.Final-redhat-1] at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) [jboss-modules.jar:1.3.6.Final-redhat-1] at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) [jboss-modules.jar:1.3.6.Final-redhat-1] at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) [jboss-modules.jar:1.3.6.Final-redhat-1] at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) [jboss-modules.jar:1.3.6.Final-redhat-1] at java.lang.Class.forName0(Native Method) [rt.jar:1.8.0_31] at java.lang.Class.forName(Class.java:260) [rt.jar:1.8.0_31] at ch.sla.jdbcperflogger.driver.WrappingDriver.connect(WrappingDriver.java:103) at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:328) at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:304) at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.createConnectionEventListener(SemaphoreArrayListManagedConnectionPool.java:834) [ironjacamar-core-impl-1.0.31.Final-redhat-1.jar:1.0.31.Final-redhat-1] at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.fillToMin(SemaphoreArrayListManagedConnectionPool.java:775) [ironjacamar-core-impl-1.0.31.Final-redhat-1.jar:1.0.31.Final-redhat-1] at org.jboss.jca.core.connectionmanager.pool.mcp.PoolFiller.run(PoolFiller.java:97) [ironjacamar-core-impl-1.0.31.Final-redhat-1.jar:1.0.31.Final-redhat-1] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_31]

@sylvainlaurent
Copy link
Owner

I don't know how jboss classloading works nowadays but the thing to understand is that the jdbc perf logger classes must be able to use the underlying jdbc driver (oracle in your case).
If you manage to declare both jars to be in the same jboss "module" you should be ok

@ivanmarban
Copy link
Author

Thanks for the tip. I've managed to use jdbc-perf-logger-driver in JBoss.

Just for the record, my declared module looks like this:

<module xmlns="urn:jboss:module:1.0" name="jdbc.jdbcperflogger">
    <resources>
        <resource-root path="jdbc-perf-logger-driver-0.8.3-SNAPSHOT.jar"/>
	<resource-root path="ojdbc6.jar"/>
    </resources>
    <dependencies>
        <module name="javax.api"/>
	<module name="javax.transaction.api"/>
    </dependencies>
</module>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants