Hi,

Please take a look at my blog about how to use jdbc driver in OSGi container [1]

[1]http://freemanfang.blogspot.com/2012/03/how-to-use-jdbc-driver-in-osgi.html
-------------
Freeman(Yue) Fang

Red Hat, Inc. 
FuseSource is now part of Red Hat
Web: http://fusesource.com | http://www.redhat.com/
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com
http://blog.sina.com.cn/u/1473905042
weibo: @Freeman小屋



On 2013-10-11, at 下午8:28, Laurence Noton wrote:

> Hi,
> 
> 
> 
> 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.

Reply via email to