Skip to content

Class loader issues with IBM Open Liberty server #1183

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
thegli opened this issue May 1, 2025 · 0 comments
Open

Class loader issues with IBM Open Liberty server #1183

thegli opened this issue May 1, 2025 · 0 comments

Comments

@thegli
Copy link

thegli commented May 1, 2025

In combination with IBM Open Liberty server, I've encountered two problems with Spring Modulith:

  1. Application startup fails with org.springframework.cglib.core.CodeGenerationException: java.lang.IllegalAccessError-->class org.springframework.modulith.events.jdbc.JdbcEventPublicationRepository$$SpringCGLIB$$0 cannot access its superclass org.springframework.modulith.events.jdbc.JdbcEventPublicationRepository.
  2. Uninitialized member variables in Service component with a @ApplicationModuleListener annotated method to consume events cause NullPointerException when accessing said member variables.

While problem 1 can be bypassed with a patched "spring-modulith-events-jdbc-1.3.5.jar" where JdbcEventPublicationRepository is declared public instead of package-private, I don't understand yet the cause for problem 2. It's also possible that this monkey patch even triggers problem 2.

Since Open Liberty is not as common as other servers, I've prepared a small demo project.
The demo application mainly consists of:

  • a Service EventProducer to publish events
  • a Service EventConsumer that consumes the events (using @ApplicationModuleListener)
  • a RestController EventController to trigger the event publication

Building the project with mvn verify will bundle Open Liberty as embedded server (instead of default Tomcat), so one does not require a standalone server installation. The README should hopefully contain enough details. Stack traces for both problems are also included.

I would like to emphasize that these issues only occur with Open Liberty as server runtime, but not with Tomcat. Open Liberty is known to do things differently thread-wise during bootstrapping than other servers (see Spring issue 34729).

Kind regards,
Thomas

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant