当前位置: 首页 > 工具软件 > XNIO > 使用案例 >

xnio java_使用Cargo Java API和Jenkins部署到Wildfly时出现“XNIO001001:没有找到XNIO提供程序”错误...

邴俊民
2023-12-01

我正在开发一个Jenkins插件,它使用Codehaus Cargo

Java API管理EAR文件到

Java EE容器的部署,但是在使用API​​部署到远程Wildfly容器时我遇到了一个问题.在部署到其他容器(如Glassfish)时,代码工作正常,但在尝试将EAR文件部署到Wildfly容器时,将返回错误消息XNIO001001:找不到XNIO提供程序.

我花了几个小时研究这个问题,但我找不到任何可能解决问题的方法.尝试部署到在Windows和Ubuntu上运行的Wildfly 8.1和8.2时会发生此问题.我还检查了Wildfly服务器日志,但它不包含与此问题相关的任何内容.

我的问题是如何防止XNIO001001:部署到Wildfly容器时没有XNIO提供程序发现错误,而代码是Jenkins插件的一部分?

我知道Jenkins已经有了类似的插件,并且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文件中,我包含了以下依赖项

org.codehaus.cargo

cargo-core-container-wildfly

1.4.14

org.codehaus.cargo

cargo-core-container-jboss

1.4.14

org.wildfly

wildfly-controller-client

8.2.0.Final

更新:我已经做了一些进一步的调查,并发现这只是一个问题,当我的代码作为Jenkins插件运行时.如果我在独立应用程序中使用相同的代码,那么Cargo能够毫无问题地将EAR文件部署到Wildfly.

 类似资料: