次の jsp を WAS に展開しています。WAS では、フェデレーテッド リポジトリを使用して LDAP を構成しています。
<%@page import="com.ibm.websphere.security.UserRegistry"%>
<%@page import="com.ibm.websphere.security.Result"%>
<%@page import="java.io.PrintWriter"%>
<%@page import="javax.naming.InitialContext"%>
<%@page import="java.util.*"%>
<html>
<head>
<title>
test user's group
</title>
</head>
<body>
<%!
String group = "my_test_group";
%>
<%
String req = request.getParameter ("group");
if (req != null) {
group = req;
}
%>
<form method="post" action="<%=request.getRequestURI()%>">
Enter Group Name:<input type="text" value="<%=group%>" name="group"/><br>
<input type="submit" value="submit"/>
</form>
<br>
<%
InitialContext ctx = new InitialContext();
UserRegistry userRegistry = (UserRegistry) ctx.lookup("UserRegistry");
try {
long start = System.currentTimeMillis();
Result result = userRegistry.getUsersForGroup(group, 0);
long end = System.currentTimeMillis();
List list = result.getList();
out.println ("call took " + (end - start) + " milliseconds<br>");
out.println (list.size() + " users for " + group + "<br>");
for (int i=0;i<list.size();i++) {
String name = (String) list.get(i);
out.println (name + "<br>");
}
}
catch (Exception e) {
PrintWriter pw = new PrintWriter (out);
%>
There was an error getting the users for the group <%=group %><br>
<pre>
<%
e.printStackTrace (pw);
%>
</pre>
<%
}
%>
</body>
</html>
WebSphere 経由でこの jsp をヒットすると、一部の LDAP グループで約 150 秒以上応答がありません。ここで興味深いのは、同じ WAS ホストから LDAP に対して直接 (LDAP ブラウザー クエリを使用して) 同じクエリを実行すると、1 秒未満の応答時間が得られることです。
奇妙なことをしているのはJSPコードですか?それとも何か変なことをしていたのですか、あるいはその両方ですか? どんな考え/指針も大歓迎です。