2017-01-17 82 views
0

有沒有一種方法來執行XQuery代碼,使用marklogic的Java API ..基本上我想獲得一個給定文件的大小和XQuery中,我可以只是下面Marklogic EXCUTE XQuery代碼的Java API

return xdmp:binary-size(fn:doc($uri)/binary()) 

有沒有簡單的方法來使用Java API來做到這一點?或者我們可以使用Java API執行隨機xquery代碼?

回答

2

是的,你有ServerEvaluationCall它啓用eval和invoke。但是,他們需要特殊的權限。 Eval特別危險,因爲當您從客戶端發送可能包含注入攻擊的臨時代碼時,它會帶來安全風險。

相反,我們建議您安裝並使用自定義resource extension

0

您可能正在尋找: 在服務器上執行專門的代碼 - 自動將數據映射到/從MarkLogic進行映射。 https://docs.marklogic.com/guide/java/resourceservices#id_47102

把它作爲試駕 - 看起來像它適合您的需求。

你也有強大的資源服務擴展選項: https://docs.marklogic.com/guide/java/resourceservices#id_27702

我絕對最喜歡的是這樣的: https://docs.marklogic.com/guide/java/resourceservices#id_84134 上MarkLogic全部模塊執行與注入的變量 - 從MarkLogic

自動映射到/數據

我們使用這個選項如下:

  • 我們在Java中有一個包裝函數。
  • 它在MarkLogic中執行一個主模塊,它也是一個包裝函數
  • markLogic函數是任何其他模塊的一個奇特的調用者。 因此,調用java層上的exec(「a.b.c」)實際上會在MarkLogic服務器上的目錄A中的模塊B中執行函數C,但結果在調用java代碼中是無縫可用的。

它有點在現實生活中(包括安全性和元/執行後的審計),但可以肯定的模式,可以通過保持控制自己的XQuery/JS代碼,幫助你,而不是允許執行任意代碼的注入更加複雜(因爲您只執行連接用戶有權使用的功能)。