From 1e3612a57f7789e934c1e803d980fa66d7d5235a Mon Sep 17 00:00:00 2001 From: Ondro Mihalyi Date: Sat, 25 Oct 2025 09:48:04 +0200 Subject: [PATCH] Fix GlassFish static shell bootstrap setup * Was missing several JARs in the JAR classpath after they were relocated earlier * Behaved as DAS. Now behaves as Embedded * Added static shell as another target for Embedded tests --- .../glassfish-embedded-static-shell/pom.xml | 2 +- appserver/tests/embedded/pom.xml | 1 + appserver/tests/embedded/runnable/pom.xml | 21 ++++++++++++++++++- .../runnable/TestArgumentProviders.java | 15 ++++++++++++- .../embedded/EmbeddedGlassFishRuntime.java | 2 +- 5 files changed, 37 insertions(+), 4 deletions(-) diff --git a/appserver/extras/embedded/shell/glassfish-embedded-static-shell/pom.xml b/appserver/extras/embedded/shell/glassfish-embedded-static-shell/pom.xml index 59d9311c990..9eabce14e86 100755 --- a/appserver/extras/embedded/shell/glassfish-embedded-static-shell/pom.xml +++ b/appserver/extras/embedded/shell/glassfish-embedded-static-shell/pom.xml @@ -1395,7 +1395,7 @@ org.glassfish.embedded.static-shell - ${classpath.derby} ../asadmin/server-mgmt.jar ../../admin-cli.jar + ${classpath.derby} ../asadmin/server-mgmt.jar ../../admin-cli.jar ../bootstrap/simple-glassfish-api.jar ../bootstrap/glassfish-jdk-extensions.jar ../bootstrap/glassfish.jar ../bootstrap/glassfish-jul-extension.jar org.glassfish.runnablejar.UberMain java.base/java.lang java.base/java.io java.base/java.util java.base/sun.nio.fs java.base/sun.net.www.protocol.jrt java.naming/javax.naming.spi java.rmi/sun.rmi.transport jdk.management/com.sun.management.internal java.base/jdk.internal.vm.annotation java.naming/com.sun.jndi.ldap java.base/jdk.internal.vm.annotation diff --git a/appserver/tests/embedded/pom.xml b/appserver/tests/embedded/pom.xml index 319a5355e02..f672307ff4c 100755 --- a/appserver/tests/embedded/pom.xml +++ b/appserver/tests/embedded/pom.xml @@ -79,6 +79,7 @@ ${basedir} ${surefire.workdir} + ${glassfish.version} diff --git a/appserver/tests/embedded/runnable/pom.xml b/appserver/tests/embedded/runnable/pom.xml index 137b8e3bd6c..c2c78ea85af 100644 --- a/appserver/tests/embedded/runnable/pom.xml +++ b/appserver/tests/embedded/runnable/pom.xml @@ -43,6 +43,12 @@ 1.2.6 pom + + org.glassfish.main.distributions + glassfish + zip + ${glassfish.version} + org.glassfish.main.extras glassfish-embedded-all @@ -59,12 +65,25 @@ maven-dependency-plugin - copy-dependencies + copy-embedded generate-test-resources copy-dependencies + org.glassfish.main.extras + ${surefire.workdir} + true + + + + unpack-static-shell + generate-test-resources + + unpack-dependencies + + + org.glassfish.main.distributions ${surefire.workdir} true diff --git a/appserver/tests/embedded/runnable/src/test/java/org/glassfish/tests/embedded/runnable/TestArgumentProviders.java b/appserver/tests/embedded/runnable/src/test/java/org/glassfish/tests/embedded/runnable/TestArgumentProviders.java index bedc618cc7a..21b2c9a5317 100644 --- a/appserver/tests/embedded/runnable/src/test/java/org/glassfish/tests/embedded/runnable/TestArgumentProviders.java +++ b/appserver/tests/embedded/runnable/src/test/java/org/glassfish/tests/embedded/runnable/TestArgumentProviders.java @@ -22,6 +22,7 @@ import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.ArgumentsProvider; +import org.junit.jupiter.params.support.ParameterDeclarations; /** * @@ -32,15 +33,27 @@ public class TestArgumentProviders { public static class GfEmbeddedJarNameProvider implements ArgumentsProvider { @Override - public Stream provideArguments(ExtensionContext ec) throws Exception { + public Stream provideArguments(ParameterDeclarations declarations, ExtensionContext ec) throws Exception { List arguments = new ArrayList<>(); arguments.add(Arguments.of("glassfish-embedded-all.jar")); if (!GfEmbeddedUtils.isDebugEnabled()) { arguments.add(Arguments.of("glassfish-embedded-web.jar")); + arguments.add(Arguments.of("glassfishXX/glassfish/lib/embedded/glassfish-embedded-static-shell.jar" + .replace("XX", getGlassFishMajorVersion()))); } return arguments.stream(); } + private static String getGlassFishMajorVersion() { + String versionProperty = "glassfish.version"; + String version = System.getProperty(versionProperty); + if (version != null) { + return version.split("\\.")[0]; + } else { + throw new IllegalArgumentException("The " + versionProperty + " system property is not defined. It should define the GlassFish version"); + } + } + } } diff --git a/nucleus/core/bootstrap-osgi/src/main/java/org/glassfish/main/boot/embedded/EmbeddedGlassFishRuntime.java b/nucleus/core/bootstrap-osgi/src/main/java/org/glassfish/main/boot/embedded/EmbeddedGlassFishRuntime.java index 2cbee699c9c..3b41634d2a3 100644 --- a/nucleus/core/bootstrap-osgi/src/main/java/org/glassfish/main/boot/embedded/EmbeddedGlassFishRuntime.java +++ b/nucleus/core/bootstrap-osgi/src/main/java/org/glassfish/main/boot/embedded/EmbeddedGlassFishRuntime.java @@ -131,6 +131,7 @@ public synchronized void shutdown() throws GlassFishException { } private void setEnv(GlassFishProperties gfProps) throws Exception { + gfProps.setProperty("-type", "EMBEDDED"); String instanceRootValue = gfProps.getInstanceRoot(); if (instanceRootValue == null) { instanceRootValue = createTempInstanceRoot(gfProps); @@ -144,7 +145,6 @@ private void setEnv(GlassFishProperties gfProps) throws Exception { String installRootValue = System.getProperty("org.glassfish.embeddable.installRoot"); if (installRootValue == null) { installRootValue = instanceRoot.getAbsolutePath(); - gfProps.setProperty("-type", "EMBEDDED"); JarUtil.extractRars(installRootValue); } JarUtil.setEnv(installRootValue);