Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao usar driver SQLite: org.sqlite.JDBC

Estou tentando usar o driuver do SQLite no meu projeto.

Pela IDE ele funciona perfeitamente, mas quando envio para o fuse dá o seguinte erro:

caught: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is java.sql.SQLException: Cannot load JDBC driver class 'org.sqlite.JDBC'

No meu camel-context.xml eu instancio o JDBC dessa forma:

<bean class="org.apache.commons.dbcp2.BasicDataSource"
        destroy-method="close" id="dataSource">
        <property name="driverClassName" value="org.sqlite.JDBC"/>
        <!-- A Url do banco é inserida dinamicamente pela rota -->
        <property name="username" value=""/>
        <property name="password" value=""/>
    </bean>

pom.xml

        <dependency>
            <groupId>org.xerial</groupId>
            <artifactId>sqlite-jdbc</artifactId>
            <version>3.16.1</version>
        </dependency>

Antes de instalar meu bundle no fuse, instalei o jdbc dessa forma:

osgi:install -s wrap:mvn:org.xerial/sqlite-jdbc/3.16.1

O engraçado é que funciona perfeitamente na IDE, mas não no osgi.

Uma coisa que percebi também, é que não existe esse pacote nos Imported Packages desse bundle no osdgi:

 Imported Packages
org.apache.activemq.camel.component
org.apache.camel
org.apache.camel.builder
org.apache.camel.component.sql
org.apache.camel.http.common
org.apache.camel.processor
org.apache.camel.processor.aggregate
org.apache.commons.dbcp2

Já tentei várias coisas, já procurei muito, mas não consigo encontrar uma solução para esse problema.

2 respostas

Oi Douglas,

parece ser um problema no osgi mesmo. eu nao manjo tanto do osgi mas tem como executar um bundle:list para ver os o driver foi carregado e resolvido corretamente (active).

abs

solução!

Pois é.

O pacote estava lá, tudo parecia estar certo, mas ele simplesmente não usava o package.

Depois de muito procurar eu vi que no pom.xml eu poderia adicionar um parametro chamado Import-Package dentro do mave-bundle -plugin, então resolvi testar, para ver o que dava. E não é que funcionou.

            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>${maven-bundle-plugin.version}</version>
                <extensions>true</extensions>
                <configuration>
                    <instructions>
                        <Export-Package>br.com.dbitech.*</Export-Package>
                        <Import-Package>*,org.sqlite,org.sqlite.*</Import-Package>
                        <Bundle-Name>DBI Tech test integration</Bundle-Name>
                    </instructions>
                </configuration>
            </plugin>

Algumas coisas são muito difíceis de achar. Não existe documentação completa para isso. Alguns lugares só falam: Você tem esses parâmetros, mas não diz para que servem.