Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取JBoss上所有已部署应用程序列表的Java方法_Java_Jboss_Command Line Interface_Wildfly - Fatal编程技术网

获取JBoss上所有已部署应用程序列表的Java方法

获取JBoss上所有已部署应用程序列表的Java方法,java,jboss,command-line-interface,wildfly,Java,Jboss,Command Line Interface,Wildfly,我需要你的帮助。我需要获取Jboss服务器上所有已部署应用程序的列表。最好是我能得到一个应用程序的URL列表。我不知道怎么做。 我试过了,但有个问题 有没有办法获取已部署应用程序的URL?一种可能的解决方案是使用JBoss CLI Java API查询JBoss以获取所有部署的列表,然后对于每个部署,使用另一个命令获取其URL 以下是一个示例(在Wildfly 20上测试): import org.jboss.as.cli.CommandContext; 导入org.jboss.as.cli.s

我需要你的帮助。我需要获取Jboss服务器上所有已部署应用程序的列表。最好是我能得到一个应用程序的URL列表。我不知道怎么做。 我试过了,但有个问题


有没有办法获取已部署应用程序的URL?

一种可能的解决方案是使用JBoss CLI Java API查询JBoss以获取所有部署的列表,然后对于每个部署,使用另一个命令获取其URL

以下是一个示例(在Wildfly 20上测试):

import org.jboss.as.cli.CommandContext;
导入org.jboss.as.cli.scriptsupport.cli;
导入org.jboss.as.controller.client.ModelControllerClient;
导入org.jboss.dmr.ModelNode;
...
CLI=CLI.newInstance();
cli.connect();//*本地*连接-使用cli.connext(…)进行*远程*连接
CommandContext ctx=cli.getCommandContext();
ModelControllerClient=ctx.getModelControllerClient();
//获取所有已部署的Web应用程序
modelnodeclicommand=ctx.buildRequest(“部署信息”);
ModelNode响应=client.execute(cliCommand);
ModelNode结果=response.get(“结果”);
trace(“CLI响应:{}”,result.toJSONString(false));
设置webapps=result.keys();
//获取特定webapp的上下文路径
字符串webapp=“…”;
字符串s=String.format(“/deployment=%s/subsystem=undertow:read属性(name=context root)”,webapp);
modelnodeclicommand=ctx.buildRequest;
ModelControllerClient=ctx.getModelControllerClient();
ModelNode响应=client.execute(cliCommand);
字符串路径=response.get(“result”).asString();
...
cli.disconnect();

以下各项应能起作用。请注意,如果你有一些耳朵,你可能需要改变它一点

公共静态映射getDeployments()引发IOException{
最终映射=新LinkedHashMap();
try(ModelControllerClient=ModelControllerClient.Factory.create(“localhost”,9990)){
最终模型节点地址=Operations.createAddress(“部署”、“子系统”、“牵引下”);
final ModelNode op=Operations.createReadAttributeOperation(地址,“上下文根”);
最终ModelNode结果=client.execute(op);
如果(!Operations.IssuccessfulOutput(结果)){
抛出新的RuntimeException(Operations.getFailureDescription(result.asString());
}
最终列表部署=Operations.readResult(result).asList();
用于(ModelNode部署:部署){
final ModelNode deploymentAddress=Operations.getOperationAddress(部署);
if(deploymentAddress.isDefined()){
最后一个字符串deploymentName=deploymentAddress.asPropertyList().get(0.getValue().asString();
最后一个字符串contextRoot=Operations.readResult(deployment.asString();
put(deploymentName,contextRoot);
}
}
}
返回图;
}

您使用的是哪个版本的JBoss EAP或WildFly?@JamesR.Perkins我使用的是JBoss EAP 7.3.3.g请在您的另一个问题上输入消息id,该问题看起来像您尝试连接的JBoss EAP的旧版本。您是否只需要每个部署的上下文根?@JamesR.Perkins是的上下文根将足够大您确定要使用JBoss EAP 7.3.3吗?“JBAS012144”来自JBoss AS 7.x或JBoss EAP 6.x的旧版本。我得到错误:java.lang.IllegalStateException:无法初始化命令上下文。由以下原因引起:javax.xml.stream.XMLStreamException:ParseError at[row,col]:[6,1]消息:意外元素“{urn:jboss:cli:3.3}jboss-cli”我收到消息:类型操作的方法createAddress(String,String,String,String,String)未定义。我使用import org.jboss.as.controller.client.helpers.Operations;您使用的是哪个版本的
org.wildfly.core:wildfly控制器客户端
?无论使用哪种方法,您都可以直接使用
ModelNode
创建地址。在
操作
实用程序中就是这样做的。我尝试了几个版本。我应该使用哪个版本?如果您使用的是JBoss EAP 7.3.3,那么提供的是哪个版本。7.3.3中的版本。是10.1.12.SP1-redhat-00001。我忘了添加,如果您想使用社区版本,最新版本是15.0.1.Final。
import org.jboss.as.cli.CommandContext;
import org.jboss.as.cli.scriptsupport.CLI;
import org.jboss.as.controller.client.ModelControllerClient;
import org.jboss.dmr.ModelNode;

...

CLI cli = CLI.newInstance();
cli.connect();  // *Local* connection - use cli.connext(...) for *remote* connection
CommandContext ctx = cli.getCommandContext();
ModelControllerClient client = ctx.getModelControllerClient();

// Get all deployed webapps
ModelNode cliCommand = ctx.buildRequest("deployment-info");             
ModelNode response = client.execute(cliCommand);
ModelNode result = response.get("result");
LOG.trace("CLI response: {}", result.toJSONString(false) );
Set<String> webapps = result.keys();

// Get context path of a particular webapp
String webapp = "..."; 
String s = String.format("/deployment=%s/subsystem=undertow:read-attribute(name=context-root)", webapp);
ModelNode cliCommand = ctx.buildRequest(s); 
ModelControllerClient client = ctx.getModelControllerClient();
ModelNode response = client.execute(cliCommand);        
String path = response.get("result").asString();
...
cli.disconnect();