2012-02-23 74 views
2

即時通訊目前開發karaf束,並有一些問題...Karaf發展

我寫了基於CXF捆/ web服務,我嘗試它karaf部署,但它無法啓動包,因爲它不能解決一些包例如

org.osgi.framework.BundleException:包中的未解析約束org.springframework.aop [56]:無法解析56.0:缺少 需求[56.0]包; (&(package = org.aopalliance.aop)(version> = 1.0.0)(!(version> = 2.0.0)))

所以這裏是一個問題,這個包依賴來自spring-aop 3.1.0.RELEASE),那麼問題在哪裏?什麼依賴缺失?我該如何解決這些問題?

在這種情況下,我沒有清楚地瞭解開發過程。我應該在部署中部署所有缺少的軟件包嗎?因爲我想保留從我開發的捆綁包中獲得的第三方庫。以及我必須部署哪些捆綁包?這是一個反覆試驗的過程嗎?有沒有一種常見的方式讓maven做依賴的東西?

我發現一個文件夾「系統」,並在文件上讀取它是一個類似maven的存儲庫,它是爲了什麼功能?

我對測試用例一些預先部署捆綁一個karaf,並把我的web服務捆綁進去,但同樣execeptions ......通過

引起:拋出java.lang.ClassNotFoundException:javax.servlet.http.HttpServlet

缺少什麼依賴性?

我已閱讀關於駱駝和卡拉夫的教程,但它沒有解釋部署的東西,所以任何人都可以給我一個很好的教程嗎?

謝謝! 克里斯

+0

它總是值得加入更廣泛的標籤,以吸引更多潛在的答案 - 我已經添加了OSGi的標籤,因爲這是你的一些疑問都沒有Karaf具體 – earcam 2012-03-02 12:46:26

回答

7

簡短的回答

向下滾動到一點提到「駱駝CXF」並運行兩個命令的功能:addurl及特點:安裝。我有一種感覺,這將解決你所有的問題。


彈簧AOP

在Karaf控制檯類型:

exports | grep org.aopalliance.aop 

我想你會看到這樣幾行:

XX org.aopalliance.aop; version=3.1.0.RELEASE 

因此而彈簧的AOP捆綁包有正確的軟件包,它們是錯誤的版本,請求的範圍是> = 1.0.0和< 2.0.0,所以3.1.0不能滿足這個要求。


部署/安裝

可以刪除束到$ {} karaf.home /部署或使用控制檯。

可以從Karaf控制檯安裝Maven包:

install -s mvn:groupId/artifactId/version/packaging/classifier 

-s開始包和包裝/分類是可選的。

你可以在這裏找到很多OSGi的準備Maven依賴的http://ebr.springsource.com/repository/app/ - 我有一個快看,但你的Spring AOP的依賴是很老,你使用的是什麼版本的CXF的?

閱讀了有關Karaf特點 - 他們基本上是列出了可以安裝束套房XML文件。對於部署大量的bundle非常有用,它們可以安裝到Maven存儲庫中。

有在Karaf提供一些標準功能,嘗試:

features:install war 

這會給你一個碼頭Web容器和可能解決您的ClassNotFoundException:javax.servlet.http.HttpServlet只要它是正確的版本

駱駝也有一個特點文件這可能排序所有的問題,試試這個:

features:addurl mvn:org.apache.camel.karaf/apache-camel/2.9.0/xml/features 
features:install camel-cxf 

教程

有不少可用的,一些對http://karaf.apache.orghttp://fusesource.com也看看自帶的Karaf分佈的PDF說明書。 時時提防這些信息可能是出於過期

-1

請發表您的MANIFEST.MF文件。我想你並沒有提到maven-bundle-plugin依賴中的標籤。