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

时间:2017-11-17 09:33:51

标签: java ibm-midrange jt400 jtopen

是否有可能仅检索启用用户 - 将过滤器添加到jt400的UserList的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);
            }

        }

1 个答案:

答案 0 :(得分:3)

您可以像这样查询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());
    }
}

现在只选择最快的方法。