2

我开发了一个自定义调解器及其相应的工厂/序列化器类,以便我可以在序列中为其配置复杂的配置选项。这是使用碳工作室的碳应用程序项目制作的。

问题是我可以使配置元素工作的唯一方法是在.car文件之外部署 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

任何帮助都感激不尽。

4

2 回答 2

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/main/resources 文件夹中。
  3. 使用 Maven 构建 Custom Mediator 项目
  4. 创建一个 Java Library Artifact 项目并确保向其中添加 jXLS 库。
  5. 使用 Maven 构建 Java 库工件项目
  6. 创建碳应用项目
  7. 添加 Custom Mediator Project 和 Java Library Artifact 项目作为 Carbon 应用程序项目的依赖项。
  8. 使用 Maven 构建 C-App 项目

现在,您将能够在 ESB 中毫无问题地运行 ESB Custom Mediator。

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

您的调解员项目结构将与上述类似

希望这可以帮助!!

谢谢。

/哈莎娜

于 2012-05-31T09:06:04.407 回答
1

我不认为在 JavaLibraryArtifact 项目和 Custom mediator 项目之间声明项目级别的依赖关系可以解决这个问题。

但是您可以通过将依赖项添加到调解器项目中的实际 3rd 方库来实现此目的。

脚步:

  1. 右键单击 Custom mediator 项目,选择 Build Path -> Configure Build Path
  2. 转到库选项卡并选择“添加罐子”按钮。这将填充项目浏览器对话框
  3. 在项目浏览器中展开 JavaLibraryArtifact 项目并从那里的文件列表中选择 jXLS 库,然后单击“确定”

现在,您已将 jXLS 添加到自定义中介项目构建路径中。因此,您不会在您的 Custom Mediator 项目中看到任何错误。

如果您打开 Custom mediator 项目的 .Classpath 文件,您将看到类似于以下内容的条目。

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

为了避免来自 Maven 的编译错误,您需要在 Custom mediator 项目 pom.xml 中添加一个 Dependency to jXLS library。

通过执行上述步骤,您可以避免在项目中复制 JXLS 库。

希望这可以帮助!!

谢谢。

/哈莎娜

于 2012-06-04T07:04:17.217 回答