wso2is:如何注册UMListenerServiceComponent?

时间:2014-03-21 16:41:40

标签: wso2is

我想在IS管理控制台中重新分发事件。例如,如果我添加/更改/删除用户或角色,我想将这些更新重新发送给其他消费者。 我到目前为止找到的唯一方法是UMListenerServiceComponent。 看起来我可以定义自己的UserStoreManagerListener并在UMListenerServiceComponent上注册它。

以下示例来自 https://svn.wso2.org/repos/wso2/branches/carbon/3.2.0/core/org.wso2.carbon.user.core/3.2.3/src/main/java/org/wso2/carbon/user/core/jdbc/JDBCUserStoreManager.java

在这种情况下,添加用户的操作是触发已注册的侦听器。

public void addUser(String userName, Object credential, String[] roleList,
        Map<String, String> claims, String profileName, boolean requirePasswordChange)
        throws UserStoreException {

    for (UserStoreManagerListener listener : UMListenerServiceComponent
            .getUserStoreManagerListeners()) {
        if (!listener.addUser(userName, credential, roleList, claims, profileName, this)) {
            return;
        }
    }
    // persist the user info. in the database.
    persistUser(userName, credential, roleList, claims, profileName, requirePasswordChange);

}

我的问题是如何实现和注册这种听众? 或者有更简单的方法吗? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

问题解决了!
下载用于wso2IS 4.6.0的identity-manager版本:  http://svn.wso2.org/repos/wso2/carbon/platform/branches/turing/components/identity/org.wso2.carbon.identity.mgt/4.2.1 IdentityMgtServiceComponent类正在将注册IdentityMgtEventListener作为Osgi-Context中的服务。

IdentityMgtServiceComponent:

protected void activate(ComponentContext context) {
        listener = new IdentityMgtEventListener();
        serviceRegistration = context.getBundleContext().registerService(
                UserOperationEventListener.class.getName(), listener, null);

最后,我复制了这个模式并编写了我自己的包,其中包含AbstractUserOperationEventListener的扩展,并通过bundle-loader-class激活它。 所有前/后添加/删除操作都被触发正常 希望这有帮助