Running Keycloak 4.5.0.Final.
I’ve created a JPA provider with a single JPA entity class and some additional classes to implement a REST endpoint. Everything is in a single JAR file which is deployed to the server by copying the JAR to the …/standalone/deployments directory. After the server starts, everything works fine. However, if I make a change, rebuild the JAR, and re-deploy it, I’ll get a ClassCastException which basically says that FooEntity cannot be cast to FooEntity. If I re-start the server, everything is fine again.
I recognize this as a classloader issue and I’ve seen similar issues reported against WildFly, but without a definitive solution. One classloader must still have a reference to FooEntity from the previous deployment, but another classloader is loading it after the re-deployment. My JAR is a “fat JAR” containing my own provider’s classes and some org.json.* classes.
My jboss-deployment-structure.xml file is shown below. Any thoughts on how to fix this problem?
<?xml version="1.0" encoding="UTF-8"?> <jboss-deployment-structure> <deployment> <dependencies> <module name="org.keycloak.keycloak-server-spi-private"/> <module name="org.keycloak.keycloak-services"/> <module name="org.keycloak.keycloak-model-jpa"/> <module name="org.hibernate"/> </dependencies> </deployment> </jboss-deployment-structure>