2012-03-19 132 views
1

我試圖構建駱駝SQL應用程序,但我堆棧。駱駝SQL組件

我在http://camel.apache.org/sql-component.html頁面找到關於camel-sql的信息。

我創建的XML配置,如實例,並在我的FUSE ESB我發現異常:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 
    'camel-21': Invocation of init method failed; nested exception is 
    org.springframework.beans.factory.CannotLoadBeanClassException: 
Cannot find class [org.springframework.jdbc.datasource.DriverManagerDataSource] 
for bean with name 'esb' defined in URL [bundle://249.2:0/META-INF/spring/camel-context.xml]; nested exception is java.lang.ClassNotFoundException: 
org.springframework.jdbc.datasource.DriverManagerDataSource not found from bundle [camel] 

但在我的保險絲控制檯我有春天的jdbc:

[email protected]> osgi:list | grep Spring 

ID國家藍圖春級別名稱 [73] [活動] [] [] [60]的Spring Bean(3.0.5.RELEASE)

[74] [活動] [] [] [60] Spring上下文支持(3 。 0.5.RELEASE)

[75] [有效] [] [] [60]彈簧上下文(3.0.5.RELEASE)

[76] [有效] [] [] [60]彈簧表達式語言(3.0.5.RELEASE)

[77] [有效] [] [] [60]彈簧ASM(3.0.5.RELEASE)

[78] [有效] [] [] [60]彈簧芯(3.0.5.RELEASE)

[79] [有效] [] [] [60]彈簧AOP(3.0.5.RELEASE)

[87] [有效] [] [] [60]的Apache XBean ::彈簧(3.8)

[92] [有效] [] [] [50]彈簧交易(3.0.5.RELEASE)

[94] [有效] [] [] [50]彈簧JMS(3.0.5.RELEASE)

[169] [有效] [] [] [50]的Apache XBean ::彈簧(3.7 )

[223] [活動] [] [] [60]的Spring Web(3.0.5.RELEASE)

Spring Web Servlet(3.0.5.RELEASE)

[252] [Active] [] [] [50] Spring JDBC(3.0.5.RELEASE)

我需要做什麼?

UPDATE:

我POM是:

<?xml version="1.0" encoding="UTF-8"?> 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>camelWs</groupId> 
    <artifactId>camel</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 

    <name>A Camel Route</name> 
    <url>http://www.myorganization.org</url> 

    <dependencies> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-core</artifactId> 
     <version>2.9.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-spring</artifactId> 
     <version>2.9.0</version> 
    </dependency> 

    <!-- logging --> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-api</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-log4j12</artifactId> 
     <version>1.6.1</version> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.16</version> 
    </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>3.0.5.RELEASE</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>3.0.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>3.0.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>3.0.5.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.camel</groupId> 
      <artifactId>camel-sql</artifactId> 
      <version>2.8.0</version> 
      <!-- use the same version as your Camel core version --> 
     </dependency> 
    </dependencies> 

    <build> 
    <defaultGoal>install</defaultGoal> 

    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 


     </configuration> 
     </plugin> 
     <plugin> 
       <groupId>org.apache.felix</groupId> 
       <artifactId>maven-bundle-plugin</artifactId> 
       <version>2.1.0</version> 
       <extensions>true</extensions> 
       <configuration> 
        <instructions> 
         <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName> 
         <Import-Package> 
          org.springframework.jdbc.datasource 
         </Import-Package> 

        </instructions> 
       </configuration> 
      </plugin> 

     <!-- allows the route to be ran via 'mvn camel:run' --> 
     <plugin> 
     <groupId>org.apache.camel</groupId> 
     <artifactId>camel-maven-plugin</artifactId> 
     <version>2.9.0</version> 
     <configuration> 

      <instructions> 

         <Import-Package> 
          *, 
          org.springframework.jdbc, 
          org.springframework.jdbc.datasource 

         </Import-Package> 

          <DynamicImport-Package>camel.*</DynamicImport-Package> 

        </instructions> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

但是當我使用OSGi:頭我沒有看到導入的類,什麼是錯的IM我的pom.xml?

OSGi的:標題:

camel (271) 
----------- 
Manifest-Version = 1.0 
Bnd-LastModified = 1332154265299 
Archiver-Version = Plexus Archiver 
Tool = Bnd-0.0.357 
Originally-Created-By = Apache Maven 
Generated-By-Ops4j-Pax-From = wrap:file:/.../$Bundle-SymbolicName=camel&Bundle-Version=1.0.0.SNAPSHOT 
Build-Jdk = 1.6.0_29 
Created-By = 1.6.0_29 (Apple Inc.) 

Bundle-Name = camel 
Bundle-SymbolicName = camel 
Bundle-Version = 1.0.0.SNAPSHOT 
Bundle-ManifestVersion = 2 

Private-Package = 
    . 
Import-Package = 
    camel;resolution:=optional, 
    org.apache.camel.builder;resolution:=optional, 
    org.apache.camel.model;resolution:=optional, 
    org.apache.camel.spring;resolution:=optional 
Export-Package = 
    camel;uses:="org.apache.camel.builder,org.apache.camel.model,org.apache.camel.spring" 

回答

3

OSGi對於輕鬆安裝和使用JDBC驅動程序可能有點麻煩。經過驗證的解決方案是將JDBC驅動程序作爲碎片束安裝到您的軟件包中。

它已經在FuseSource論壇上討論過,在那裏有說明如何解決這個問題。起點是此鏈接:http://fusesource.com/forums/thread.jspa?messageID=13043&#13043,然後按照參考資料進行其他討論以獲取更多詳細信息以及如何解決該問題。

0

你應該確保你的路線有進口包org.springframework.jdbc.datasource。您可以使用karf中的標頭命令對其進行驗證。

+0

我找到了'org.springframework.jdbc.datasource' - 我已經在 – Ilkar 2012-03-19 10:23:43

+0

以上添加更新了。抱歉,我看了一下錯誤的包 - 你能看看我的更新嗎? – Ilkar 2012-03-19 10:56:35

+0

您確定您的包裝正確嗎?我看到你使用** wrap ** util來部署你的路由JAR,它不應該是一個直接使用Maven bundle插件構建的bundle嗎?從我所知的wrap util掃描java的導入來構建清單,而不是spring的上下文,這可能是問題所在。 – 2012-03-19 14:28:42

0

好的,我找到了解決辦法。

這很簡單 - 我只需要安裝mysql連接器。

謝謝大家。