One of the things that I don't see often when it comes to using GraalVM to compile Java apps to native binaries is the fact that a lot of stuff "don't work out of the box".
For example, any form of dynamic dispatch / runtime polymorphism will fail so stuff like log4j, jdbc, etc will fail.
You need to give hint to the AoT compiler on how to handle some classes so it'll be resolved on compile.
So, next time when you're making a new web project targeting GraalVM. It's a good idea to use something that's rather complete and has GraalVM support as a main feature, like Micronaut or Quarkus.