2015-06-11 1 views
3

Я работаю над плагином Jenkins, который управляет развертыванием EAR-файлов в контейнерах Java EE с использованием API-интерфейсов Codehaus Cargo Java, вы столкнулись с проблемой при использовании API для развертывания в удаленном контейнере Wildfly. Код отлично работает при развертывании в других контейнерах, таких как Glassfish, но при попытке развернуть EAR-файл в контейнер Wildfly возвращается сообщение об ошибке XNIO001001: No XNIO provider found.Ошибка «XNIO001001: Отсутствует поставщик XNIO» при развертывании в Wildfly с использованием Cargo Java API и Jenkins

Я провел несколько часов, исследуя эту проблему, но я не могу найти ничего, что могло бы решить проблему. Эта проблема возникает при попытке развертывания в Wildfly 8.1 и 8.2, работающем в Windows и Ubuntu. Я также проверил журнал сервера Wildfly, но в нем нет ничего, связанного с этой проблемой.

Мой вопрос, что может сделать я, чтобы предотвратить ошибку XNIO001001: No XNIO provider found при развертывании в Wildfly контейнера в то время как код является частью плагина Дженкинс?

Я знаю, что у Дженкинса уже есть аналогичный плагин, и что Cargo можно использовать с Maven для развертывания в контейнерах, но ни одна из них не отвечает моим конкретным требованиям.

Код я написал, чтобы развернуть файл EAR следующим образом:

public void redeploy(String containerId, String deployFile, String hostname, String username, String password) { 

    DeployableFactory deployableFactory = new DefaultDeployableFactory(); 
    Deployable deployable = deployableFactory.createDeployable(containerId, deployFile, DeployableType.EAR); 

    ConfigurationFactory configurationFactory = new DefaultConfigurationFactory(); 
    Configuration configuration = configurationFactory.createConfiguration(containerId, ContainerType.REMOTE, ConfigurationType.RUNTIME); 
    configuration.setProperty("cargo.hostname",hostname); 
    configuration.setProperty("cargo.remote.username", username); 
    configuration.setProperty("cargo.remote.password", password); 

    ContainerFactory containerFactory=new DefaultContainerFactory(); 
    Container container = containerFactory.createContainer(containerId, ContainerType.REMOTE, configuration); 

    DeployerFactory deployerFactory = new DefaultDeployerFactory(); 
    Deployer deployer = deployerFactory.createDeployer(container); 

    deployer.redeploy(deployable); 
} 

Когда containerId установлен на wildfly8x сообщение об ошибке XNIO001001: No XNIO provider found возвращается вместе со следующим StackTrace:

org.codehaus.cargo.util.CargoException: Cannot deploy deployable org.codehaus.cargo.container.deployable.EAR[hello-world-ear-0.0.1-SNAPSHOT.ear] 
    at org.codehaus.cargo.container.jboss.JBoss5xRemoteDeployer.deploy(JBoss5xRemoteDeployer.java:216) 
    at org.codehaus.cargo.container.spi.deployer.AbstractDeployer.redeploy(AbstractDeployer.java:245) 
    at org.jenkinsci.plugins.cargo.CargoDeployer.redeploy(CargoDeployer.java:56) 
    at org.jenkinsci.plugins.cargo.DeployerRedeploy.perform(DeployerRedeploy.java:97) 
    at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:726) 
    at hudson.model.Build$BuildExecution.post2(Build.java:185) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:671) 
    at hudson.model.Run.execute(Run.java:1769) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:98) 
    at hudson.model.Executor.run(Executor.java:374) 
Caused by: java.lang.IllegalArgumentException: XNIO001001: No XNIO provider found 
    at org.xnio.Xnio.doGetInstance(Xnio.java:238) 
    at org.xnio.Xnio.getInstance(Xnio.java:193) 
    at org.jboss.remoting3.Remoting.createEndpoint(Remoting.java:112) 
    at org.jboss.as.controller.client.impl.RemotingModelControllerClient.getOrCreateChannel(RemotingModelControllerClient.java:124) 
    at org.jboss.as.controller.client.impl.RemotingModelControllerClient$1.getChannel(RemotingModelControllerClient.java:67) 
    at org.jboss.as.protocol.mgmt.ManagementChannelHandler.executeRequest(ManagementChannelHandler.java:117) 
    at org.jboss.as.protocol.mgmt.ManagementChannelHandler.executeRequest(ManagementChannelHandler.java:92) 
    at org.jboss.as.controller.client.impl.AbstractModelControllerClient.executeRequest(AbstractModelControllerClient.java:236) 
    at org.jboss.as.controller.client.impl.AbstractModelControllerClient.execute(AbstractModelControllerClient.java:141) 
    at org.jboss.as.controller.client.impl.AbstractModelControllerClient.executeAsync(AbstractModelControllerClient.java:101) 
    at org.jboss.as.controller.client.helpers.standalone.impl.ModelControllerClientServerDeploymentManager.executeOperation(ModelControllerClientServerDeploymentManager.java:50) 
    at org.jboss.as.controller.client.helpers.standalone.impl.AbstractServerDeploymentManager.execute(AbstractServerDeploymentManager.java:79) 
    at org.codehaus.cargo.tools.jboss.JBossDeployer.executeAction(JBossDeployer.java:144) 
    at org.codehaus.cargo.tools.jboss.JBossDeployer.deploy(JBossDeployer.java:84) 
    at org.codehaus.cargo.container.jboss.JBoss5xRemoteDeployer.deploy(JBoss5xRemoteDeployer.java:212) 
    ... 12 more 
java.lang.IllegalArgumentException: XNIO001001: No XNIO provider found 
    at org.xnio.Xnio.doGetInstance(Xnio.java:238) 
    at org.xnio.Xnio.getInstance(Xnio.java:193) 
    at org.jboss.remoting3.Remoting.createEndpoint(Remoting.java:112) 
    at org.jboss.as.controller.client.impl.RemotingModelControllerClient.getOrCreateChannel(RemotingModelControllerClient.java:124) 
    at org.jboss.as.controller.client.impl.RemotingModelControllerClient$1.getChannel(RemotingModelControllerClient.java:67) 
    at org.jboss.as.protocol.mgmt.ManagementChannelHandler.executeRequest(ManagementChannelHandler.java:117) 
    at org.jboss.as.protocol.mgmt.ManagementChannelHandler.executeRequest(ManagementChannelHandler.java:92) 
    at org.jboss.as.controller.client.impl.AbstractModelControllerClient.executeRequest(AbstractModelControllerClient.java:236) 
    at org.jboss.as.controller.client.impl.AbstractModelControllerClient.execute(AbstractModelControllerClient.java:141) 
    at org.jboss.as.controller.client.impl.AbstractModelControllerClient.executeAsync(AbstractModelControllerClient.java:101) 
    at org.jboss.as.controller.client.helpers.standalone.impl.ModelControllerClientServerDeploymentManager.executeOperation(ModelControllerClientServerDeploymentManager.java:50) 
    at org.jboss.as.controller.client.helpers.standalone.impl.AbstractServerDeploymentManager.execute(AbstractServerDeploymentManager.java:79) 
    at org.codehaus.cargo.tools.jboss.JBossDeployer.executeAction(JBossDeployer.java:144) 
    at org.codehaus.cargo.tools.jboss.JBossDeployer.deploy(JBossDeployer.java:84) 
    at org.codehaus.cargo.container.jboss.JBoss5xRemoteDeployer.deploy(JBoss5xRemoteDeployer.java:212) 
    at org.codehaus.cargo.container.spi.deployer.AbstractDeployer.redeploy(AbstractDeployer.java:245) 
    at org.jenkinsci.plugins.cargo.CargoDeployer.redeploy(CargoDeployer.java:56) 
    at org.jenkinsci.plugins.cargo.DeployerRedeploy.perform(DeployerRedeploy.java:97) 
    at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:726) 
    at hudson.model.Build$BuildExecution.post2(Build.java:185) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:671) 
    at hudson.model.Run.execute(Run.java:1769) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:98) 
    at hudson.model.Executor.run(Executor.java:374) 

В файле pom.xml для моего плагина я включил следующие зависимости:

<dependency> 
    <groupId>org.codehaus.cargo</groupId> 
    <artifactId>cargo-core-container-wildfly</artifactId> 
    <version>1.4.14</version> 
</dependency> 
<dependency> 
    <groupId>org.codehaus.cargo</groupId> 
    <artifactId>cargo-core-container-jboss</artifactId> 
    <version>1.4.14</version> 
</dependency> 
<dependency> 
    <groupId>org.wildfly</groupId> 
    <artifactId>wildfly-controller-client</artifactId> 
    <version>8.2.0.Final</version> 
</dependency> 

Обновление: Я провел некоторое исследование и обнаружил, что это проблема только при запуске моего кода в качестве плагина Jenkins. Если я использую тот же код в автономном приложении, Cargo может без проблем развернуть EAR-файл в Wildfly.

+0

Я перешел от груза к wildfly-Maven-плагин некоторое время назад , и все мои проблемы исчезли - YMMV. –

ответ

2

Похоже, у вас есть xnio-api.jar, но нет xnio-nio.jar в пути к классам, когда вы запускаете свой код в качестве плагина Jenkins. Вы можете запустить mvn dependency:tree и посмотреть, какая версия XNIO используется, а затем связать ее с вашим плагином.

1

Вы можете добавить xnio-nio.jar на свой путь к классам с этой зависимостью в вас pom.xml:

<dependency> 
    <groupId>org.jboss.xnio</groupId> 
    <artifactId>xnio-nio</artifactId> 
    <version>3.4.6.Final</version> 
</dependency> 

Смотрите также список версия здесь: https://mvnrepository.com/artifact/org.jboss.xnio/xnio-nio

Смежные вопросы