2017-04-25 14 views
0

admin-client SDKを使用してKeycloackからユーザーデータを取得しようとしています。私はそうのようなクライアントを構築しました:起こるようです何Keycloackリクエストを作成しようとすると、管理クライアントがハングする

Keycloak kc = KeycloakBuilder.builder() // 
      .serverUrl("some_url") 
      .realm("some-realm") 
      .username("admin") // 
      .password("password") // 
      .clientId("curl") 
      .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).connectionCheckoutTimeout(10, TimeUnit.SECONDS).build()) // 
      .build(); 

    System.out.println("built"); 
    UsersResource baz = kc.realm(keycloakConfiguration.getRealm()).users(); 
    System.out.println(baz.count()); 

bazをフェッチしようとしたときに私のプログラムが無限にハングアップするということである - 私のデバッガはそれを打つことはありません。私は何が起こっているのかよくわからない - 私の信任状は正しい。ビルダーに1.一定期間後に失敗する、または2.自分の資格情報が正しいことを確認する正しい方法は何ですか?それは、うまくデバッグするのが難しいです。

答えて

1

クライアントが「オンライン」かどうかを確認するカスタムメソッドを作成できます。

private void tryToPingKeycloak(KeycloakClient keycloakClient) { 
    keycloakClient.serverInfo().getInfo(); 
} 

は今、あなたはそれを使用する前にクライアントをチェックすることができ:

if (isKeycloakClientValid(kc)) { 
    UsersResource baz = kc.realm(keycloakConfiguration.getRealm()).users(); 
} 
ヘルプ方法で

public boolean isKeycloakClientValid(Keycloak keycloakClient) { 
    try { 
     tryToPingKeycloak(keycloakClient); 
    } catch (Exception e) { 
     logger.error("Error while pinging the keycloak server", e); 
     return false; 
    } 
    return true; 
} 

:このメソッドは次のようになります

関連する問題