Skip to content

Commit f7fe8d4

Browse files
Issue 52855: Missing Servlet API when extracting remote pipeline resources (#1045)
1 parent 2409a42 commit f7fe8d4

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

server/embedded/src/org/labkey/embedded/EmbeddedExtractor.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,9 @@ public void extractExecutableJar(File destDirectory, boolean remotePipeline)
224224
{
225225
try (JarFile jar = new JarFile(verifyJar()))
226226
{
227-
boolean foundDistributionZip = false;
227+
boolean missingDistributionZip = true;
228+
boolean missingBootstrapJar = remotePipeline;
229+
boolean missingServletApiJar = remotePipeline;
228230
var entries = jar.entries();
229231
while (entries.hasMoreElements())
230232
{
@@ -233,22 +235,24 @@ public void extractExecutableJar(File destDirectory, boolean remotePipeline)
233235

234236
if ("labkey/distribution.zip".equals(entryName))
235237
{
236-
foundDistributionZip = true;
238+
missingDistributionZip = false;
237239
try (var distInputStream = jar.getInputStream(entry))
238240
{
239241
extractDistributionZip(distInputStream, destDirectory);
240242
}
241243
}
242244
if (remotePipeline)
243245
{
246+
// Keep this code in sync with org.labkey.pipeline.api.PipelineServiceImpl.extractBootstrapFromEmbedded()
244247
if (entry.getName().contains("labkeyBootstrap") && entry.getName().toLowerCase().endsWith(".jar"))
245248
{
246249
try (var in = jar.getInputStream(entry))
247250
{
248251
extractFile(in, new File(destDirectory, "labkeyBootstrap.jar"));
249252
}
253+
missingBootstrapJar = false;
250254
}
251-
if (entry.getName().contains("tomcat-servlet-api") && entry.getName().toLowerCase().endsWith(".jar"))
255+
if (entry.getName().contains("tomcat-embed-core") && entry.getName().toLowerCase().endsWith(".jar"))
252256
{
253257
File pipelineLib = new File(destDirectory, "pipeline-lib");
254258
if (!pipelineLib.exists())
@@ -262,14 +266,23 @@ public void extractExecutableJar(File destDirectory, boolean remotePipeline)
262266
{
263267
extractFile(in, new File(pipelineLib, "servletApi.jar"));
264268
}
269+
missingServletApiJar = false;
265270
}
266271
}
267272
}
268273

269-
if (!foundDistributionZip)
274+
if (missingDistributionZip)
270275
{
271276
throw new ConfigException("Unable to find distribution zip required to run LabKey Server.");
272277
}
278+
if (missingBootstrapJar)
279+
{
280+
throw new ConfigException("Unable to find labkeyServer.jar required to run LabKey Server's remote pipeline code.");
281+
}
282+
if (missingServletApiJar)
283+
{
284+
throw new ConfigException("Unable to find Servlet API file required to run LabKey Server's remote pipeline code.");
285+
}
273286
}
274287
}
275288
catch (IOException | ConfigException e)

0 commit comments

Comments
 (0)