【问题标题】:apache servicemix cannot load jdbc driver for apache dbcpapache servicemix 无法为 apache dbcp 加载 jdbc 驱动程序
【发布时间】:2018-02-23 02:40:10
【问题描述】:

我有一个 servicemix bundle 尝试 load jdbc driver 并失败并显示消息

Cannot load JDBC driver class 'com.mysql.jdbc.Driver'

这是我的pom.xml 文件

      <!-- MySQL -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.32</version>
    </dependency>

    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>1.4</version>
    </dependency>

    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.4.2</version>
    </dependency>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <configuration>
                <instructions>
                    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                    <Import-Package>
                        com.mysql.jdbc,
                        *
                    </Import-Package>
                    <DynamicImport-Package>
                        *
                    </DynamicImport-Package>
                </instructions>
            </configuraiton>
        </plugin>

我的 features.xml 文件中提到了以下几行,该文件使用features:addurl 命令添加到 karaf。

<bundle>wrap:mvn:mysql/mysql-connector-java/5.1.32</bundle>
<bundle>wrap:mvn:commons-dbcp/commons-dbcp/1.4</bundle>
<bundle>wrap:mvn:commons-pool/commons-pool/1.6</bundle>

【问题讨论】:

  • 是否有定义的路线,如果有,请发布? mysql-connector 安装了吗?
  • @user7294900:mvn clean install 工作得非常好。我面临的问题与 osgi 导入 - 导出有关
  • @J_D:route print 中有很多条目。我应该寻找任何具体的条目吗?

标签: java jdbc apache-karaf apache-servicemix


【解决方案1】:

你见过ClassNotFoundException: com.mysql.jdbc.Driver not found while using service mix吗?用户在 Pom 中添加了以下内容:

<osgi-import-package>
  org.apache.commons.dbcp
</osgi-import-package>

<dependency>
  <groupId>org.apache.servicemix.bundles</groupId>
  <artifactId>org.apache.servicemix.bundles.commons-dbcp</artifactId>
  <version>1.4_3</version>
</dependency>

并且还从

改变了路线
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

【讨论】:

  • servicemix.bundles for dbcp 只不过是bundle wrap,我已经通过&lt;bundle&gt;wrap:mvn:mysql/mysql-connector-java/5.1.32&lt;/bundle&gt; &lt;bundle&gt;wrap:mvn:commons-dbcp/commons-dbcp/1.4&lt;/bundle&gt; &lt;bundle&gt;wrap:mvn:commons-pool/commons-pool/1.6&lt;/bundle&gt; 实现了它,而且我已经在我的代码中使用 dbcp 作为数据源,所以不需要更改那。我已经更新了我的问题。
【解决方案2】:

我通过添加servicemix wrapper jar for dbcp @https://mvnrepository.com/artifact/org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-dbcp/1.4_3 解决了这个问题

生成的 pom 条目

    <dependency>
        <groupId>org.apache.servicemix.bundles</groupId>
        <artifactId>org.apache.servicemix.bundles.commons-dbcp</artifactId>
        <version>1.4_3</version>
    </dependency>

注意:在使用 karaf 或任何 OSGi 时,请始终注意 bundle/jar 文件的 META-INF/MANIFEST.MF 以查看它导入的内容(Import-Package)和导出的内容(Export-Package

如下面karaf-console dbcp bundle 的截图,com.mysql.jdbc 包是为 servicemix dbcp 导入的

&lt;bundle&gt;wrap:mvn:commons-dbcp/commons-dbcp/1.4$Import-Package=com.mysql.jdbc&lt;/bundle&gt; 的导入应该与屏幕截图中的相同,但没有成功。

【讨论】:

    猜你喜欢
    • 2021-08-23
    • 2012-06-20
    • 2013-03-03
    • 2015-10-10
    • 2017-05-17
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多