2012-05-30 29 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

相关问题