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.
