2014-04-23 19 views
0

我想使用分頁順序進行搜索。同樣我使用VirtualListViewRequestControl。似乎它不工作我試過一切可能的方式。不過還是我收到以下錯誤: -unboundid VirtualListViewRequestControl不起作用

信息:水平= 「INFO」 主題ID = 37 threadName =版本= 15579的ConnectionId = 8 connectedTo =「10.96.186.240 」用於連接8 10.96.186.240:389連接閱讀器「 :389「readLDAPResult =」SearchResult(resultCode = 76(虛擬列表視圖錯誤),messageID = 6,diagnosticMessage ='00002040:SvcErr:DSID-031401ED,問題5010(UNAVAIL_EXTENSION),數據0',entriesReturned = -1,referencesReturned = -1,responseControls = {VirtualListViewResponseControl(targetPosition = 0,contentCount = 0,發送resultCode = 60(排序丟失)控制)})」

即使在搜索請求添加VirtualListViewRequestControl之前我特別是檢查是我的目錄支撐virturalListViewControl或沒有幫助RootDSE,結果是肯定的。同樣的例子,我嘗試用jndi工作正常。在文檔中,unboundid表示他們支持它,但看起來不起作用。

下面是一些示例代碼

SearchRequest searchRequest = new SearchRequest("dc=mydomain,dc=com", 
      SearchScope.SUB, Filter.createEqualityFilter("objectClass", "person")); 

searchRequest.setControls(
      new ServerSideSortRequestControl(false, new SortKey("sn"), 
       new SortKey("givenName")), 
      new VirtualListViewRequestControl(vlvOffset, 0, 9, vlvContentCount, 
       vlvContextID, true)); 

SearchResult searchResult = connection.search(searchRequest); 

有人可以幫我解決這個問題。或者請將我重定向到我可以找到解決方案的位置。

回答

0

Note that Active Directory supports only a single sort key」。

即(新ServerSideSortRequestControl(假,新的排序關鍵字( 「SN」), 新SORTKEY( 「給定名稱」)),

只能有一個排序關鍵字。 -Jim

+0

感謝jeemster, 刪除多個排序鍵後,它工作正常但我發現如果sort屬性的值未在目錄中設置unboundId無法獲取記錄任何指針? 如果要按cn排序,再次搜索失敗返回ldapException(不支持crirtical控制)...任何指針 – lalit

+0

Try Nei我的建議? – jwilleke

0

UnboundID LDAP SDK對虛擬列表視圖控件的支持絕對可以與其他目錄服務器一起使用,所以很可能出現這樣的情況:Active Directory(我認爲是您使用的服務器錯誤響應的格式)處理它。

錯誤響應的「排序控制缺失」部分很奇怪,因爲您清楚地在請求中提供了適當的控制。也許Active Directory不喜歡VLV請求控制是關鍵,但服務器端排序請求控制不是。您是否嘗試將ServerSideSortRequestControl構造函數的第一個參數從false更改爲true,以便將排序控件標記爲關鍵?

如果這樣不能解決問題,但同樣的請求似乎可以與JNDI一起工作,那麼在JNDI和UnboundID LDAP SDK之間查看客戶端和服務器之間的準確流量是很有用的。你可以通過使用UnboundID LDAP SDK提供的ldap-debugger工具來獲得。這將創建一個非常簡單的LDAP代理,您可以將其配置爲將收到的任何請求轉發到指定的目錄服務器,然後將LDAP客戶端指向ldap-debugger工具而不是實際的目錄服務器。然後,ldap-debugger工具將打印出有關通過它的確切LDAP請求和響應流量的詳細信息。如果您對來自JNDI和UnboundID LDAP SDK的請求都這樣做,這應該有助於我們瞭解其中的差異並確定如何處理它。