enhance user storage jpa example
This commit is contained in:
parent
88d08c4f38
commit
8b4bb72fb3
4 changed files with 75 additions and 7 deletions
|
@ -1,14 +1,28 @@
|
||||||
Example User Storage Provider with EJB and JPA
|
Example User Storage Provider with EJB and JPA
|
||||||
===================================================
|
===================================================
|
||||||
|
|
||||||
This is an example of the User Storage SPI implemented using EJB and JPA. To deploy this provider you must have Keycloak
|
This is an example of the User Storage SPI implemented using EJB and JPA. You must first deploy the datasource it uses.
|
||||||
running in standalone or standalone-ha mode. Then type the follow maven command:
|
Start up the Keycloak server. Then in the directory of this example type the following maven command:
|
||||||
|
|
||||||
|
mvn -Padd-datasource install
|
||||||
|
|
||||||
|
You only need to execute this maven command once. If you execute this again, then you will get an error message that the datasource
|
||||||
|
already exists.
|
||||||
|
|
||||||
|
If you open the pom.xml file you'll see that the add-datasource profile creates an XA datasource using the built
|
||||||
|
in H2 database that comes with the server. An XA datasource is required because you cannot use two non-xa datasources
|
||||||
|
in the same transaction. The Keycloak database is non-xa.
|
||||||
|
|
||||||
|
Another thing to note is that the xa-datasource created is in-memory only. If you reboot the server, any users you've
|
||||||
|
added or changes you've made to users loaded by this provider will be wiped clean.
|
||||||
|
|
||||||
|
To deploy the provider, run the following maven command:
|
||||||
|
|
||||||
mvn clean install wildfly:deploy
|
mvn clean install wildfly:deploy
|
||||||
|
|
||||||
|
You can run as many times as you want and the provider will be redeployed.
|
||||||
|
|
||||||
Login and go to the User Federation tab and you should now see your deployed provider in the add-provider list box.
|
Login and go to the User Federation tab and you should now see your deployed provider in the add-provider list box.
|
||||||
Add the provider, save it, then any new user you create will be stored and in the custom store you implemented. You
|
Add the provider, save it, then any new user you create will be stored and in the custom store you implemented. You
|
||||||
can modify the example and hot deploy it using the above maven command again.
|
can modify the example and hot deploy it using the above maven command again.
|
||||||
|
|
||||||
This example uses the built in in-memory datasource that comes with keycloak: ExampleDS. NOTE!!! You'll have
|
|
||||||
to change this to be an xa datasource for this to work.
|
|
||||||
|
|
|
@ -75,7 +75,7 @@
|
||||||
<target>1.8</target>
|
<target>1.8</target>
|
||||||
</configuration>
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.wildfly.plugins</groupId>
|
<groupId>org.wildfly.plugins</groupId>
|
||||||
<artifactId>wildfly-maven-plugin</artifactId>
|
<artifactId>wildfly-maven-plugin</artifactId>
|
||||||
<configuration>
|
<configuration>
|
||||||
|
@ -84,4 +84,58 @@
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
</build>
|
</build>
|
||||||
|
<profiles>
|
||||||
|
<!-- this profile deploys an XA H2 datasource connection. It is in-memory only, so rebooting the server will lose
|
||||||
|
your changes. Run type: mvn -Padd-datasource install. THis can only be run once. If you run it again
|
||||||
|
you'll get an error that the datasource already exists -->
|
||||||
|
<profile>
|
||||||
|
<id>add-datasource</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.wildfly.plugins</groupId>
|
||||||
|
<artifactId>wildfly-maven-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<skip>false</skip>
|
||||||
|
<force>true</force>
|
||||||
|
</configuration>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>add-datasource</id>
|
||||||
|
<phase>install</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>add-resource</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<force/>
|
||||||
|
<address>subsystem=datasources</address>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<address>xa-data-source=java:jboss/datasources/ExampleXADS</address>
|
||||||
|
<properties>
|
||||||
|
<jndi-name>java:jboss/datasources/ExampleXADS</jndi-name>
|
||||||
|
<enabled>true</enabled>
|
||||||
|
<driver-name>h2</driver-name>
|
||||||
|
</properties>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<address>
|
||||||
|
xa-datasource-properties=URL
|
||||||
|
</address>
|
||||||
|
<properties>
|
||||||
|
<value>jdbc:h2:mem:test</value>
|
||||||
|
</properties>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
http://java.sun.com/xml/ns/persistence
|
http://java.sun.com/xml/ns/persistence
|
||||||
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
|
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
|
||||||
<persistence-unit name="user-storage-jpa-example" transaction-type="JTA">
|
<persistence-unit name="user-storage-jpa-example" transaction-type="JTA">
|
||||||
<jta-data-source>java:jboss/datasources/KeycloakDS</jta-data-source>
|
<jta-data-source>java:jboss/datasources/ExampleXADS</jta-data-source>
|
||||||
|
|
||||||
<class>org.keycloak.examples.storage.user.UserEntity</class>
|
<class>org.keycloak.examples.storage.user.UserEntity</class>
|
||||||
|
|
||||||
|
|
2
pom.xml
2
pom.xml
|
@ -117,7 +117,7 @@
|
||||||
<jmeter.analysis.plugin.version>1.0.4</jmeter.analysis.plugin.version>
|
<jmeter.analysis.plugin.version>1.0.4</jmeter.analysis.plugin.version>
|
||||||
<minify.plugin.version>1.7.2</minify.plugin.version>
|
<minify.plugin.version>1.7.2</minify.plugin.version>
|
||||||
<osgi.bundle.plugin.version>2.3.7</osgi.bundle.plugin.version>
|
<osgi.bundle.plugin.version>2.3.7</osgi.bundle.plugin.version>
|
||||||
<wildfly.plugin.version>1.0.1.Final</wildfly.plugin.version>
|
<wildfly.plugin.version>1.1.0.Beta1</wildfly.plugin.version>
|
||||||
<nexus.staging.plugin.version>1.6.5</nexus.staging.plugin.version>
|
<nexus.staging.plugin.version>1.6.5</nexus.staging.plugin.version>
|
||||||
|
|
||||||
<!-- Surefire Settings -->
|
<!-- Surefire Settings -->
|
||||||
|
|
Loading…
Reference in a new issue