如何使用 jt400 API 仅检索启用 AS400 的用户



是否可以仅检索已启用的用户 - 添加过滤器 - 到jt400的用户列表的getUsers方法?

我做了以下实现,但它的性能不好,所以我正在尝试找到一种更好的方法,如果有可能过滤用户并仅获取已启用的用户。

Set<String> as400Users = new HashSet(); 
AS400 as400 = new AS400(host, username, password);
//Retrieving Users
UserList users = new UserList(as400);
Enumeration io = users.getUsers();
  while (io.hasMoreElements()) {
            com.ibm.as400.access.User u = (com.ibm.as400.access.User)io.nextElement();
            String userName = u.getName();
            if (u.getStatus().equalsIgnoreCase("*ENABLED")) {
                as400Users.add(userName);
            }
        }

您可以像这样查询USER_INFO视图:

select * 
from qsys2.user_info
where status = '*ENABLED'

这在 v7.1 中可用。请注意,这仅提供您有权访问的用户。

您可能还希望在筛选器内移动getName()调用:

Set<String> as400Users = new HashSet(); 
AS400 as400 = new AS400(host, username, password);
//Retrieving Users
UserList users = new UserList(as400);
Enumeration io = users.getUsers();
while (io.hasMoreElements()) {
    com.ibm.as400.access.User u = (com.ibm.as400.access.User)io.nextElement();
    if (u.getStatus().equalsIgnoreCase("*ENABLED")) {
        as400Users.add(u.getName());
    }
}

或者,您可以将较新的foreach语法与getUsers(-1,0)

Set<String> as400Users = new HashSet(); 
AS400 as400 = new AS400(host, username, password);
//Retrieving Users
UserList users = new UserList(as400);
for (com.ibm.as400.access.User u: users.getUser(-1,0)) {
    if (u.getStatus().equalsIgnoreCase("*ENABLED")) {
        as400Users.add(u.getName());
    }
}

现在只需选择最快的方法。

相关内容

  • 没有找到相关文章

最新更新