[keycloak-dev] new provider deployer working on branch!

Harold Campbell hcamp at muerte.net
Tue Oct 4 14:00:41 EDT 2016


On Sat, 2016-08-06 at 11:43 -0400, Bill Burke wrote:
> I've implemented a Keycloak provider deployer and it works great.  I 
> re-implemented the JPA User Storage SPI example.  The provider is now
>> @Stateful EJB and EntityManager access is all managed by 
> @PersistenceContext.  The example now looks really simple and
> elegant 
> rather than the crap I mentioned before.  Would not have worked
> without 
> the JTA integration I did (see previous email).  Things left to do:
> 

Do I need to do something special to get the CDI container bootstrapped
in a deployment? I'm deploying a jar which contains CDI annotated
classes and a beans.xml (though the beans.xml should not be necessary)
and yet I get:

Caused by: java.lang.ClassNotFoundException: javax.enterprise.inject.spi.CDI from [Module "deployment.envestnet-auth-full.jar:main" from Se
rvice Module Loader]
        at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363)
        at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351)
        at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93)

If I add a dependency on javaee.api to my MANIFEST.MF the class not
found goes away, but instead I get:

Caused by: java.lang.IllegalStateException: Singleton not set for STATIC_INSTANCE => []
        at org.jboss.weld.bootstrap.api.helpers.RegistrySingletonProvider$RegistrySingleton.get(RegistrySingletonProvider.java:28)
        at org.jboss.weld.Container.instance(Container.java:55)
        at org.jboss.as.weld.WeldProvider.getCDI(WeldProvider.java:61)
        at javax.enterprise.inject.spi.CDI.current(CDI.java:60)
...


Both can be triggered at the users page by clicking 'View all users'.
This is a UserFederationProvider I'm trying to convert to a deployment
so I can use JPA & CDI. I'm reusing code from another project which is
CDI based, so rewriting logic to be EJB based as in your user-storage-
jpa example would not be ideal.

-- 
Harold Campbell <hcamp at muerte.net>

"Stupidity, like virtue, is its own reward"
-- William E. Davidsen


More information about the keycloak-dev mailing list