我正在使用 Pax Exam 在 Karaf 中测试 CXF REST 服务。测试几乎总是在我的机器上顺利运行。在 Jenkins(在 Maven 构建下)运行时,它们通常会失败。失败似乎是随机的和不可预测的。我在失败期间收到的错误涉及尝试运行 Karaf 命令。这些命令由以下代码段执行:
def byteArrayOutputStream = new ByteArrayOutputStream();
def printStream = new PrintStream(byteArrayOutputStream);
CommandProcessor commandProcessor = getOsgiService(CommandProcessor.class);
CommandSession commandSession = commandProcessor.createSession(System.in, printStream, System.err);
commandSession.put("APPLICATION", System.getProperty("karaf.name", "root"));
commandSession.put("USER", "karaf");
commandSession.execute(command)
这些是我试图在测试设置方法中执行的命令:
'features:addurl mvn:org.apache.cxf.karaf/apache-cxf/2.7.2/xml/features', 'features:install http', 'features:install cxf'
这是一个例外:
org.apache.felix.gogo.runtime.CommandNotFoundException: Command not found: features:addurl
显然有时 Karaf 无法正确启动并且无法处理这些命令。像这样的错误在不同 Karaf 命令的不同测试中随机发生。在我的机器上,如果机器处于负载状态,它们更有可能发生。
什么可能导致卡拉夫以这种方式行事?如何防止这些错误的发生?
谢谢,
迈克尔