Today, I wanted to use the JDBC adapter in webMethod’s Integration Server to connect to a database from a Java service. As it turns out, the configuration was quite frustrating for me. Here’s a history of the problems that appeared while trying to get a database connection running:
Error encountered
[ART.118.5042] Adapter Runtime (Connection): Unable to enable connection resource ***
[ART.118.5036] Adapter Runtime (Connection): Unable to configure connection manager.
[ADA.1.200] The JDBC DataSource class "oracle.jdbc.pool.OracleDataSource " cannot be located.
oracle.jdbc.pool.OracleDataSource
The problem was a trailing space at the end of the DataSource class name (take a good look at the above message), although I have no idea how it got there.
Solution: Remove the trailing space.
[ADA.1.200] The JDBC DataSource class "oracle.jdbc.pool.OracleDataSource" cannot be located.
oracle.jdbc.pool.OracleDataSource
This was a “real” problem, because IS or the JDBC adapter could not find the desired class. You need to add them to IS to make it work, e.g. by taking ojdbc6.jar
from the installation directory of your local oracle client or downloading the JDBC drivers from Oracle’s website.
Solution: Copy the JAR file containing the needed classes to IS_DIR\packages\WmJDBCAdapter\code\jars
and restart IS.
[ADA.1.204] Cannot connect to the database with DataSource class "oracle.jdbc.pool.OracleDataSource".
Ungültiger Oracle-URL angegeben/Invalid Oracle URL specified: OracleDataSource.makeURL
Apparently, the Oracle driver had a problem creating the correct URL for connecting to the database, although I provided all the needed information like server, username etc. correctly.
Solution: Add driverType=oci
under “Other Properties” in the connection’s properties.
no ocijdbc11 in java.library.path
Apparently, Oracle was missing some libraries I could have copied from my local Oracle installation. But instead, I switched over to using Oracle’s thin driver and it worked instantly.
Solution: Add driverType=thin
under “Other Properties” in the connection’s properties.
So, to sum up my configuration to get an Oracle connection running in IS’s JDBC adapter:
- Copy Oracle’s JDBC drivers (e.g.
ojdbc6.jar
) toIS_DIR\packages\WmJDBCAdapter\code\jars
. - Restart IS.
- Add
driverType=thin
under “Other Properties” in the connection’s properties. - Enable the connection.
How do you get the JDBC connection from within the Java service? JNDI?
We don’t call JDBC from Java Services. We use the JDBC adapter for Integration Server. It allows us to create adapter services that access the database directly via a JDBC connection managed by IS.