Deployng Class Mediator и Артефакт по архиву CAR
Я использую WSO2 Developer Studio 3.5. Я разработал серию артефактов конфигурации внутри проекта synapse-config.
Затем я разработал свой собственный посредник класса.
В конце концов я создал проект составного приложения. Внутри его я выбрал проект конфигурации и посредник класса.
Используя команду mvn clean install, я создал архив CAR.
Я вошел в консоль управления и добавил файл автомобиля через раздел углеродного приложения. Глядя на мой журнал wso2 esb 4.8.1, я увидел некоторые исключения:
[2015-05-23 23:52:58,900] ERROR - CappAxis2Deployer Error while deploying carbon application C:\CodeHome\WSO2ES~1.1\bin\..\repository\deployment\server\carbonapps\Diogene-WSO2CAR_1.0.0.car
org.apache.synapse.deployers.SynapseArtifactDeploymentException: Error while backing up the artifact: DynamicEndpointConfigurationTask-1.0.0.xml
at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.handleSynapseArtifactDeploymentError(AbstractSynapseArtifactDeployer.java:473)
at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.backupFile(AbstractSynapseArtifactDeployer.java:517)
at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.deploy(AbstractSynapseArtifactDeployer.java:197)
at org.wso2.carbon.application.deployer.synapse.SynapseAppDeployer.deployArtifacts(SynapseAppDeployer.java:100)
at org.wso2.carbon.application.deployer.internal.ApplicationManager.deployCarbonApp(ApplicationManager.java:251)
at org.wso2.carbon.application.deployer.CappAxis2Deployer.deploy(CappAxis2Deployer.java:114)
at org.apache.axis2.deployment.repository.util.DeploymentFileData.deploy(DeploymentFileData.java:136)
at org.apache.axis2.deployment.DeploymentEngine.doDeploy(DeploymentEngine.java:807)
at org.apache.axis2.deployment.repository.util.WSInfoList.update(WSInfoList.java:144)
at org.apache.axis2.deployment.RepositoryListener.update(RepositoryListener.java:377)
at org.apache.axis2.deployment.RepositoryListener.checkServices(RepositoryListener.java:254)
at org.apache.axis2.deployment.RepositoryListener.startListener(RepositoryListener.java:371)
at org.apache.axis2.deployment.scheduler.SchedulerTask.checkRepository(SchedulerTask.java:59)
at org.apache.axis2.deployment.scheduler.SchedulerTask.run(SchedulerTask.java:67)
at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.runAxisDeployment(CarbonDeploymentSchedulerTask.java:79)
at org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask.run(CarbonDeploymentSchedulerTask.java:124)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.io.IOException: Failed to delete original file 'C:\CodeHome\WSO2ES~1.1\bin\..\repository\carbonapps\work\1432417976326Diogene-WSO2CAR_1.0.0.car\DynamicEndpointConfigurationTask_1.0.0\DynamicEndpointConfigurationTask-1.0.0.xml' after copy to 'C:\CodeHome\wso2esb-4.8.1\repository\carbonapps\work\1432417976326Diogene-WSO2CAR_1.0.0.car\DynamicEndpointConfigurationTask_1.0.0\DynamicEndpointConfigurationTask-1.0.0.xml.back'
at org.apache.commons.io.FileUtils.moveFile(FileUtils.java:2109)
at org.apache.synapse.deployers.AbstractSynapseArtifactDeployer.backupFile(AbstractSynapseArtifactDeployer.java:515)
... 22 more
действительно, кажется, что посредник класса не был загружен. Я пробовал разные времена, но всегда получал один и тот же результат. Этот результат подтверждается нажатием кнопки "Загрузить класс" в режиме конструктора моего прокси-сервера, когда я пытаюсь добавить свой посредник класса: "Класс не найден в пути". Является ли ручное копирование в папку компонентов /lib единственным способом добавить собственный посредник класса в мой wso2 esb?
3 ответа
Создайте проект-посредник и внутри него напишите свой собственный класс. создать архив из pom.xml вашего проекта-посредника и поместить его в /repository/components/lib
Затем в вашем проекте CAR измените POM, добавив зависимость проекта ur посредника, и, наконец, создайте файл автомобиля.
Класс-посредник должен быть упакован в jar-файл и помещен на сервер в <installdir>/repository/components/lib
,
Также ваша ошибка указывает на неправильное развертывание car-файла. Вы сначала удалили приложение из консоли администратора или повторно? Или развертывание из Developer Studio?
WSO2 ESB основан на OSGI. Поэтому вы можете добавить пользовательский класс-посредник как пакет osgi. Вы можете сослаться на статьи [1] [2] для этого. Здесь вы должны написать свой собственный файл pom.xml с пакетом в качестве упаковки. После создания проекта вы должны создать его с помощью maven и поместить файл jar в каталог $ESB_HOME/repository/components/dropins.
Другой простой способ - создать проект maven и написать посредник класса. Затем соберите проект и поместите файл jar в каталог $ESB_HOME/repository/components/lib. Затем среда выполнения сделает этот JAR-файл как пакет osgi и развернет его на сервере во время выполнения.
[1] https://docs.wso2.com/display/ESB403/Writing+a+WSO2+ESB+Mediator
[2] http://wso2.com/library/2898/
С уважением,