При работе с keycloak Java Distribution 8.0.0 API и quarkus У меня проблема с созданием объектов Keycloak.
список зависимостей
<properties>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<maven.compiler.parameters>true</maven.compiler.parameters>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus-plugin.version>1.0.0.CR2</quarkus-plugin.version>
<quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
<quarkus.platform.version>1.0.0.CR2</quarkus.platform.version>
<surefire-plugin.version>2.22.1</surefire-plugin.version>
</properties>
...
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
<version>8.0.0</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>
</dependencies>
основной метод
public static void main(String[] args) {
String serverUrl = "http://localhost:8181/auth";
String realmId = "master";
String clientId = "admin-cli";
KeycloakClient client = new KeycloakClient(serverUrl, realmId, clientId);
Keycloak kc = client.getKeycloak("adminuser", "adminpassword");
RealmResource realmResource = kc.realm("keycloak-client");
UsersResource userRessource = realmResource.users();
if (userRessource != null) {
System.out.println("Count: " + userRessource.count());
} else {
System.out.println("null");
}
}
класс клиента keycloak
public Keycloak getKeycloak(final String username, final String password) {
// Type mismatch: cannot convert from Client to ResteasyClient
ResteasyClient resteasyClient = new ResteasyClientBuilder().connectionPoolSize(10)
.register(new CustomJacksonProvider()).build();
return KeycloakBuilder.builder().serverUrl(this.serverUrl).realm(this.realmId).username(username)
.password(password).clientId(this.clientId).resteasyClient(resteasyClient).build();
}
Я узнал, что проблема возникла из-за keycloak-admin-client
, которые все еще используют ResteasyClient как здесь, поэтому я изменил свой список зависимостей к следующему.
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
<version>8.0.0</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.6.3.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
<version>3.6.3.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>3.6.3.Final</version>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-jsonb</artifactId>
</dependency>
Теперь основной метод работает нормально, но я получил еще одну ошибку.
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.resteasy.server.common.deployment.ResteasyServerCommonProcessor#build threw an exception: java.lang.IncompatibleClassChangeError: Implementing class
Я хочу знать, что вместе с текущей версией можно работать с quarkus и keycloak-admin. в противном случае возможен обходной путь.
Спасибо