JTDS deployment into Fuse.
lnoton Oct 11, 2013 8:21 AMHi,
I'm having some difficulty registering a JDBC driver, JTDS into FUSE.
routes.xml
<bean id="myDS" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="net.sourceforge.jtds.jdbc.Driver"/>
<property name="url" value="jdbc:jtds:sqlserver://?????;databaseName=?????;tds=8.0;lastupdatecount=true" />
<property name="username" value="fuser" />
<property name="password" value="fuser" />
</bean>
pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.3.4</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>rest.proxy</Bundle-SymbolicName>
<Require-Bundle>org.apache.cxf.bundle,org.apache.camel.camel-cxf,org.springframework.beans</Require-Bundle>
<Import-Package>net.sourceforge.jtds.jdbc,*</Import-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
Fuse commands run to install drivers;
osgi:install -s wrap:mvn:net.sourceforge/jtds/1.3.1
osgi:install -s wrap:mvn:jcifs/jcifs/1.3.17
If I show exports for jtds I get:
JBossFuse:karaf@root> osgi:headers 278
wrap_mvn_net.sourceforge_jtds_1.3.1 (278)
-----------------------------------------
Main-Class = net.sourceforge.jtds.jdbc.Driver
Specification-Title = JDBC
Tool = Bnd-0.0.357
Specification-Version = 3.0
Implementation-Version = 1.3.1
Generated-By-Ops4j-Pax-From = wrap:mvn:net.sourceforge/jtds/1.3.1
Created-By = 1.7.0_25 (Oracle Corporation)
Implementation-Title = jTDS JDBC Driver
Manifest-Version = 1.0
Bnd-LastModified = 1381480171800
Implementation-URL = http://jtds.sourceforge.net
Originally-Created-By = 1.7.0_21-b11 (Oracle Corporation)
Ant-Version = Apache Ant 1.8.2
Bundle-Name = wrap_mvn_net.sourceforge_jtds_1.3.1
Bundle-SymbolicName = wrap_mvn_net.sourceforge_jtds_1.3.1
Bundle-Version = 0
Bundle-ManifestVersion = 2
Import-Package =
javax.crypto;resolution:=optional,
javax.crypto.spec;resolution:=optional,
javax.naming;resolution:=optional,
javax.naming.spi;resolution:=optional,
javax.net;resolution:=optional,
javax.net.ssl;resolution:=optional,
javax.sql;resolution:=optional,
javax.transaction.xa;resolution:=optional,
jcifs;resolution:=optional,
jcifs.smb;resolution:=optional,
net.sourceforge.jtds.jdbc;resolution:=optional,
net.sourceforge.jtds.jdbc.cache;resolution:=optional,
net.sourceforge.jtds.jdbcx;resolution:=optional,
net.sourceforge.jtds.jdbcx.proxy;resolution:=optional,
net.sourceforge.jtds.ssl;resolution:=optional,
net.sourceforge.jtds.util;resolution:=optional,
org.ietf.jgss;resolution:=optional
Export-Package =
net.sourceforge.jtds.jdbc;
uses:="net.sourceforge.jtds.util,
net.sourceforge.jtds.jdbc.cache,
jcifs.smb,
jcifs,
javax.net,
net.sourceforge.jtds.ssl,
org.ietf.jgss,
net.sourceforge.jtds.jdbcx,
javax.transaction.xa",
net.sourceforge.jtds.jdbc.cache;uses:=net.sourceforge.jtds.jdbc,
net.sourceforge.jtds.jdbcx;
uses:="javax.naming,
javax.sql,
net.sourceforge.jtds.util,
net.sourceforge.jtds.jdbc,
javax.naming.spi,
javax.transaction.xa,
net.sourceforge.jtds.jdbcx.proxy",
net.sourceforge.jtds.jdbcx.proxy;uses:="net.sourceforge.jtds.jdbc,net.sourceforge.jtds.jdbcx",
net.sourceforge.jtds.ssl;uses:="javax.net.ssl,javax.net,net.sourceforge.jtds.util",
net.sourceforge.jtds.util;uses:="net.sourceforge.jtds.jdbc,javax.crypto.spec,javax.crypto"
And for JCIFS, which is required by JTDS
JBossFuse:karaf@root> osgi:headers 283
wrap_mvn_jcifs_jcifs_1.3.17 (283)
---------------------------------
Manifest-Version = 1.0
Bnd-LastModified = 1381486791455
Archiver-Version = Plexus Archiver
Tool = Bnd-0.0.357
Originally-Created-By = Apache Maven
Built-By = ajvanerp
Generated-By-Ops4j-Pax-From = wrap:mvn:jcifs/jcifs/1.3.17
Build-Jdk = 1.6.0_29
Created-By = 1.7.0_25 (Oracle Corporation)
Bundle-Name = wrap_mvn_jcifs_jcifs_1.3.17
Bundle-SymbolicName = wrap_mvn_jcifs_jcifs_1.3.17
Bundle-Version = 0
Bundle-ManifestVersion = 2
Import-Package =
javax.servlet;resolution:=optional,
javax.servlet.http;resolution:=optional,
jcifs;resolution:=optional,
jcifs.dcerpc;resolution:=optional,
jcifs.dcerpc.msrpc;resolution:=optional,
jcifs.dcerpc.ndr;resolution:=optional,
jcifs.http;resolution:=optional,
jcifs.https;resolution:=optional,
jcifs.netbios;resolution:=optional,
jcifs.ntlmssp;resolution:=optional,
jcifs.smb;resolution:=optional,
jcifs.util;resolution:=optional,
jcifs.util.transport;resolution:=optional
Export-Package =
jcifs;uses:="jcifs.util,jcifs.netbios",
jcifs.dcerpc;uses:="jcifs.util,jcifs.dcerpc.ndr,jcifs.dcerpc.msrpc,jcifs.smb",
jcifs.dcerpc.msrpc;uses:="jcifs.smb,jcifs.dcerpc,jcifs.dcerpc.ndr",
jcifs.dcerpc.ndr;uses:=jcifs.util,
jcifs.http;uses:="javax.servlet,jcifs.util,jcifs.smb,jcifs,jcifs.netbios,javax.servlet.http,jcifs.ntlmssp",
jcifs.https;uses:=jcifs.http,
jcifs.netbios;uses:="jcifs.util,jcifs.smb,jcifs",
jcifs.ntlmssp;uses:="jcifs,jcifs.util,jcifs.netbios,jcifs.smb",
jcifs.smb;uses:="jcifs.util,jcifs,jcifs.ntlmssp,jcifs.dcerpc.msrpc,jcifs.dcerpc.ndr,jcifs.dcerpc,jcifs.util.transport,jcifs.netbios",
jcifs.util,
jcifs.util.transport;uses:=jcifs.util
Now, for my bundle that I have deployed I have listed the imports, (I've hightlighted the import of JTDS, so, this has come from the POM setting):
JBossFuse:karaf@root> packages:imports 282
System Bundle (0): javax.xml.bind.annotation; version=2.2.1
Spring Beans (105): org.springframework.beans; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.annotation; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.factory; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.factory.access; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.factory.access.el; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.factory.annotation; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.factory.config; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.factory.parsing; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.factory.serviceloader; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.factory.support; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.factory.wiring; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.factory.xml; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.propertyeditors; version=3.1.3.RELEASE
Spring Beans (105): org.springframework.beans.support; version=3.1.3.RELEASE
activemq-osgi (114): org.apache.activemq.camel.component; version=5.8.0.redhat-60024
camel-core (130): org.apache.camel; version=2.10.0.redhat-60024
Apache ServiceMix :: Specs :: JSR-311 API 1.1.1 (145): javax.ws.rs; version=1.1.1
camel-cxf (194): org.apache.camel.component.cxf; version=2.10.0.redhat-60024
camel-cxf (194): org.apache.camel.component.cxf.blueprint; version=2.10.0.redhat-60024
camel-cxf (194): org.apache.camel.component.cxf.converter; version=2.10.0.redhat-60024
camel-cxf (194): org.apache.camel.component.cxf.cxfbean; version=2.10.0.redhat-60024
camel-cxf (194): org.apache.camel.component.cxf.feature; version=2.10.0.redhat-60024
camel-cxf (194): org.apache.camel.component.cxf.interceptors; version=2.10.0.redhat-60024
camel-cxf (194): org.apache.camel.component.cxf.jaxrs; version=2.10.0.redhat-60024
camel-cxf (194): org.apache.camel.component.cxf.spring; version=2.10.0.redhat-60024
camel-cxf (194): org.apache.camel.component.cxf.util; version=2.10.0.redhat-60024
Spring JDBC (244): org.springframework.jdbc.datasource; version=3.1.3.RELEASE
camel-sql (245): org.apache.camel.component.sql; version=2.10.0.redhat-60024
wrap_mvn_net.sourceforge_jtds_1.3.1 (278): net.sourceforge.jtds.jdbc; version=0.0.0
My bundle deploys fine:
[ 282] [Active ] [ ] [Started] [ 60] rest.proxy (0.0.1.SNAPSHOT)
But when I hit the rest proxy exposed by Camel (JAX-RS consumer) it has to make a a database lookup. I get this error:
Caused by: java.sql.SQLException: No suitable driver found for jdbc:jtds:sqlserver://?????;databaseName=?????;tds=8.0;lastupdatecount=true
Now, I'm no expert on OSGI, having used it in the past a little for not for a while. I cannot see anything obvious to what I'm doing wrong.
I've gone through some earlier errors and fixed them by making sure the JARs export the right packages, and the Import package is put in on my Bundle.
Any help much appreciated.