2012-05-30 33 views
2

我開發了一個定製中介及其相應的Factory/Serializer類,以便我可以在一個序列中爲它配置複雜的配置選項。這是通過使用碳工作室的碳應用項目製作的。wso2內部碳定製中介應用程序

問題是,我可以使配置元素工作的唯一方法是通過在文件外部署文件之外的jar文件。

我可以只部署.car文件使其工作嗎?爲了正常工作,我必須在哪裏放置META-INF/services文件夾?

這裏是我的CarbonAppProject結構

CarbonApp 
+--artifacts 
    +--lib 
    +--library 
     +--bundle 
     +--jXLS <-- Java Library Artifact 
    +--synapse 
     +--mediator 
     +--XlsToObjectMediator <-- Custom Mediator Artifact 
+--builder 
+--META-INF 
    +--services 
     +--org.apache.synapse.config.xml.MediatorFactory <-- FILE 
     +--org.apache.synapse.config.xml.MediatorSerializer <-- FILE 
+--src 
    +--main 
     +--java 
     +--<package> <-- mediator, factory and serializer clases 

任何幫助將非常感激。

+0

這種碳的應用程序我正在開發將使用JXLS庫2個介質XlsToObject和ObjectToXls我哪捨得用WSO2社會分享! – nicolasdij

+0

我最終設法通過創建一個Mediator項目來找到解決方法,該項目包含META-INF中的中介類,服務文件夾和根級別的lib文件夾內的外部依賴關係JAR。然後我生成了作爲擴展部署到[CARBON_HOME] \ repository \ deployment \ server \ extensions的可部署JAR文件。我仍然試圖找出如何部署.car文件中的所有內容,雖然 – nicolasdij

回答

2

您無法使用此版本的Carbon Studio獲得此版本,但可以使用該版本的新版本進行操作。您可以從http://builder1.us1.wso2.org/~developerstudio/developer-studio/2.0.0/RC1/wso2-developer-studio_2.0.0.RC1.zip

步驟中獲得更新版本。

  1. 創建一個自定義ESB中介項目,並有創建調解來源
  2. 複製META-INF/services文件夾到同一項目的src /主/資源文件夾中。
  3. 使用Maven構建Custom Mediator項目
  4. 創建一個Java Library Artifact項目並確保向其中添加jXLS庫。
  5. 構建Java庫神器項目與Maven
  6. 創建碳應用程序項目
  7. 添加自定義中保項目和Java庫神器項目爲碳應用程序項目的依賴。
  8. 構建C-應用項目與Maven

現在,您將能夠獲得在ESB運行ESB定製調解沒有任何問題。

. 
|-- pom.xml 
`-- src 
    `-- main 
     |-- java 
     | `-- ddd 
     |  `-- dd.java 
     `-- resources 
      `-- META-INF 
       `-- services 
        |-- org.apache.synapse.config.xml.MediatorFactory 
        `-- org.apache.synapse.config.xml.MediatorSerializer 

你的調停項目結構將類似於上述

希望這有助於!

謝謝。

/Harshana

+0

嗨Harshana,請注意我的原始文章的修改。 感謝您的幫助! – nicolasdij

+0

@nicolasdij我修改了我的答案根據您提供的修正..希望這會有所幫助.. –

+0

@nicolasdij如果答案是有用的..請投票回答..謝謝.. –

1

我不認爲申報JavaLibraryArtifact項目和自定義中介項目之間的項目級別依存度將解決這個問題。

但是,您可以通過從中介項目向實際的第三方庫添加依賴項來實現此目的。

步驟:

  1. 右鍵單擊自定義中介項目,選擇構建路徑 - >配置構建路徑
  2. 轉至庫選項卡,選擇「添加罐」按鈕。這將填充項目瀏覽器對話框
  3. 展開JavaLibraryArtifact項目在項目瀏覽器,並在那裏選擇從文件列表中JXLS庫,然後單擊「確定」

現在你已經添加了JXLS到您的自定義介體項目構建路徑。所以你不會在你的Custom Mediator項目中看到任何錯誤。

如果您打開Custom mediator項目的.Classpath文件,您將看到類似於以下的條目。

<classpathentry kind="lib" path="/JavaLibArtifactProject/jXLS.jar"/> 

爲避免Maven出現編譯錯誤,您需要在Custom mediator項目pom.xml中爲jXLS庫添加Dependency。

按照上述步驟,您可以避免重複項目中的JXLS庫。

希望這有助於!

謝謝。

/Harshana

+0

感謝Harshana,我通過回答你的問題解決了Eclipse中的庫依賴問題。 .car文件已成功創建,但在Carbon ESB中部署時,除非單獨部署jXLSLibrary和XlsToObjectMediator JAR,否則不會加載介體的服務元數據。也許在ESB服務器中有一些不適用於在CarbonApp文件中捆綁的自定義中介器。 – nicolasdij