Skip to content

AutoDisposableGlassFish failure: no CommandRunner implementation available #25705

@dmatej

Description

@dmatej

Description

Unfortunately we have two CommandRunner interfaces, each has just single implementation:

  • public class CommandExecutorImpl implements org.glassfish.embeddable.CommandRunner in admin-cli
  • public class CommandRunnerImpl implements org.glassfish.api.admin.CommandRunner<AdminCommandJob>in glassfish-api

I guess embedded could use the second one directly, however the glassfish-api is not on the classpath of glassfish-osgi-bootstrap (where is the AutoDisposableGlassFish class). So there will be more work, perhaps it would make sense to merge those two interfaces and create new implementation for embedded?

Noticed in ejb_group_embedded test execution log:

runclient-own:
     [java] .......... Testing module: ejb-ejb32-embedded-autoclose-ejb
     [java] Sep 17, 2025 12:18:11 AM jakarta.enterprise.system.container.ejb.org.glassfish.ejb.embedded
     [java] INFO: [EJBContainerProviderImpl] Using installation location /home/dmatej/work/repo/git/glassfish-gama/target/glassfish7/glassfish
     [java] Sep 17, 2025 12:18:11 AM jakarta.enterprise.system.container.ejb.org.glassfish.ejb.embedded
     [java] INFO: [EJBContainerProviderImpl] Using config file location: file:/tmp/domain6865137631054793019xml
     [java] Sep 17, 2025 12:18:11 AM jakarta.enterprise.system.container.ejb.org.glassfish.ejb.embedded
     [java] INFO: [EJBContainerProviderImpl] Using runtime class: class org.glassfish.main.boot.embedded.EmbeddedGlassFishRuntime
     [java] ERROR calling EJB:Sep 17, 2025 12:18:12 AM com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyJars
     [java] 
     [java] Generating report at        /home/dmatej/work/repo/git/glassfish-gama/appserver/tests/appserv-tests/test_results.xmlINFO: Cannot find javadb client jar file, derby jdbc driver will not be available by default: DerbyDB home is not set.
     [java] Reporter exception occurred!
     [java] in flushAll , creating new testSuiteHash
     [java] 
     [java] Sep 17, 2025 12:18:12 AM com.sun.enterprise.v3.server.SystemTasksImpl postConstruct
     [java] INFO: Loaded server named: server
     [java] jakarta.ejb.EJBException: org.glassfish.embeddable.GlassFishException: java.lang.NullPointerException: Cannot invoke "org.glassfish.embeddable.CommandRunner.run(String, String[])" because "commandRunner" is null
     [java]     at org.glassfish.ejb.embedded.EJBContainerProviderImpl.createContainer(EJBContainerProviderImpl.java:231)
     [java]     at org.glassfish.ejb.embedded.EJBContainerProviderImpl.createEJBContainer(EJBContainerProviderImpl.java:120)
     [java]     at jakarta.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:91)
     [java]     at jakarta.ejb.embeddable.EJBContainer.createEJBContainer(EJBContainer.java:71)
     [java]     at com.acme.Client.test(Client.java:56)
     [java]     at com.acme.Client.main(Client.java:43)
     [java] Caused by: org.glassfish.embeddable.GlassFishException: java.lang.NullPointerException: Cannot invoke "org.glassfish.embeddable.CommandRunner.run(String, String[])" because "commandRunner" is null
     [java]     at org.glassfish.main.boot.embedded.EmbeddedGlassFishRuntime.newGlassFish(EmbeddedGlassFishRuntime.java:110)
     [java]     at org.glassfish.ejb.embedded.EJBContainerProviderImpl.createContainer(EJBContainerProviderImpl.java:198)
     [java]     ... 5 more
     [java] Caused by: java.lang.NullPointerException: Cannot invoke "org.glassfish.embeddable.CommandRunner.run(String, String[])" because "commandRunner" is null
     [java]     at org.glassfish.main.boot.embedded.AutoDisposableGlassFish.<init>(AutoDisposableGlassFish.java:77)
     [java]     at org.glassfish.main.boot.embedded.EmbeddedGlassFishRuntime.newGlassFish(EmbeddedGlassFishRuntime.java:103)
     [java]     ... 6 more
     [java] java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
     [java]     at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
     [java]     at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
     [java]     at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266)
     [java]     at java.base/java.util.Objects.checkIndex(Objects.java:361)
     [java]     at java.base/java.util.ArrayList.get(ArrayList.java:427)
     [java]     at com.acme.Client.test(Client.java:67)
     [java]     at com.acme.Client.main(Client.java:43)
     [java] java.lang.NullPointerException: Cannot invoke "String.trim()" because "id" is null
     [java]     at com.sun.ejte.ccl.reporter.Reporter.setTestSuite(Reporter.java:68)
     [java]     at com.sun.ejte.ccl.reporter.SimpleReporterAdapter.printStatus(SimpleReporterAdapter.java:130)
     [java]     at com.sun.ejte.ccl.reporter.SimpleReporterAdapter.printSummary(SimpleReporterAdapter.java:188)
     [java]     at com.acme.Client.main(Client.java:47)

Based on my paper, this test never succeeded since GlassFish6, maybe it did long before.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions