我想在IS管理控制台中重新分发事件。例如,如果我添加/更改/删除用户或角色,我想将这些更新重新发送给其他消费者。 我到目前为止找到的唯一方法是UMListenerServiceComponent。 看起来我可以定义自己的UserStoreManagerListener并在UMListenerServiceComponent上注册它。
在这种情况下,添加用户的操作是触发已注册的侦听器。
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);
}
我的问题是如何实现和注册这种听众? 或者有更简单的方法吗? 提前谢谢!
答案 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激活它。 所有前/后添加/删除操作都被触发正常 希望这有帮助