2012-05-30 9 views
2

Я разработал пользовательский медиатор и соответствующие ему классы Factory/Serializer, чтобы я мог настраивать для него сложные параметры конфигурации внутри последовательности. Это было сделано с проектом проекта с использованием углеродной студии.wso2 custom mediator inside carbon app

Дело в том, что единственный способ заставить элемент конфигурации работать - это развернуть файл jar вне файла .car.

Могу я просто развернуть файл .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

Это приложение углерода Я разрабатываю будет иметь 2 медиаторы XlsToObject и ObjectToXls с использованием библиотеки jXLS, которыми я готов поделиться с WSO2 сообществом! – nicolasdij

+0

Наконец-то мне удалось найти обходной путь, создав проект посредника, содержащий классы посредников, служебную папку внутри META-INF и внешние JAR-устройства зависимостей внутри папки lib на корневом уровне. Затем я сгенерировал разворачиваемый JAR-файл, который я развернул как расширение в [CARBON_HOME] \ repository \ deployment \ server \ extensions. Я все еще связываюсь, чтобы узнать, как развернуть все это внутри файла .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 папку/услуги в папку SRC/основные/ресурсы одного и того же проекта.
  3. Создайте проект пользовательского посредника с помощью Maven
  4. Создайте проект Art Library Art библиотеки Java и обязательно добавьте к нему библиотеку jXLS.
  5. Построить библиотека Java артефакта Project с Maven
  6. Создание Carbon Project Application
  7. Добавьте Посредник проект пользовательского и проект Java Библиотека артефакта как зависимостей проекта Application Carbon.
  8. Создание проекта C-App с 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

Привет Харшана, обратите внимание на поправки к моему оригинальному сообщению. Спасибо за помощь! – nicolasdij

+0

@nicolasdij Я изменил свой ответ в соответствии с поправками, которые вы предоставили .. надеюсь, что это поможет .. –

+0

@nicolasdij Если ответ полезный .. Пожалуйста, проголосуйте за ответ .. Спасибо .. –

1

Я не думаю, что объявляя зависимость уровня проекта между проектом JavaLibraryArtifact и пользовательским проектом медиатора будет решить эту проблему.

Но вы можете достичь этого, добавив зависимость от реальной сторонней библиотеки из проекта посредника.

Шаги:

  1. Щелкните правой кнопкой мыши на проекте медиатора на заказ, выберите Build Path -> Настроить путь сборки
  2. Перейти к библиотекам вкладке и выбрать "Добавить Баночки" кнопку. Это будет заполнить диалоговое окно браузера Project
  3. расширить проект JavaLibraryArtifact в браузере проекта и выберите библиотеку jXLS из списка файлов туда и нажмите на кнопку «Ok»

Теперь вы добавили jXLS к пользовательскому путь реализации проекта медиатора. Таким образом, вы не увидите никаких ошибок в проекте Custom Mediator.

Если вы откроете файл .Classpath проекта Custom mediator, вы увидите запись, похожую на следующую.

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

Чтобы избежать ошибок компиляции из Maven, вам нужно добавить Завис в библиотеку jXLS в pom.xml медиатор проекта на заказ.

Следуя приведенным выше инструкциям, вы можете избежать дублирования библиотеки JXLS в своих проектах.

Надеюсь, что это поможет!

Спасибо.

/Harshana

+0

Спасибо, Харшана, я решил зависимость библиотек от Eclipse, приняв ваш ответ. Файл .car создается успешно, но при развертывании в Carbon ESB метаданные служб посредника не загружаются, если я отдельно разворачиваю JXLSLibrary и XlsToObjectMediator JAR отдельно. Возможно, на ESB-сервере есть что-то, что не работает с пользовательскими посредниками в комплекте с файлом CarbonApp. – nicolasdij