2016-09-08 4 views
0

セイを使用したXQueryの現在の絶対パスを取得する方法、私は複数のディレクトリにモジュールabc.xqyを持っている:MarklogicのAPI

  • /Adir/dir1/dir2/abc.xqy
  • /Bdir/DIR1/DIR2/abc.xqy
  • /Cdir/dir1/dir2/abc.xqy
  • /Ddir/dir1/dir2/abc.xqy

これは私が見つけたいJavaから呼び出さ/トリガーされますこのfの絶対位置ileが実行されたとき(xqyが実行されたときにその中でパスを取得したい)、ロジックを書き込むことができます。どのように達成することができますか? xdmp:get-invoked-pathはjavaからnewmoduleinvokeを実行しても機能しません。私がxdmp:invokeを実行したときにのみ動作します。

+0

詳しくは、横にファイルabc.xqyがあります。 /Adir/dir1/dir2/abc.xqy。 /Bdir/dir1/dir2/abc.xqy。 /Cdir/dir1/dir2/abc.xqy。 /Ddir/dir1/dir2/abc.xqy。 これは実行時(xqyが実行されたときにそのパスを取得したい場合)に、論理を書き込むことができるファイルの絶対的な場所を探したいと思います。どのように達成することができますか? xdmp:Javaからnewmoduleinvokeを実行すると、get-invoked-pathが機能しません。 xdmp:invokeを実行したときにのみ動作します。 – Sarankumar

答えて

1

例外をスローしてキャッチしたり、スタックトレースを解析したりすることなく、正確に(特にライブラリモジュールの場合)どの物理ファイルを検出するのは難しいです。しかし、xdmp:get-invoked-pathの隣にはxdmp:get-request-pathがあり、xdmp:modules-rootも関連している可能性があります。

HTH!

0

お試しxdmp:get-request-urlドキュメントから:

host_name:port_numberに続くURLの部分を返します。出力には、URLに指定されたフラグメント識別子は含まれません(つまり、#記号や#記号の後に続くものは含まれません)。 URLリライタが使用されている場合、この関数はリライトされたURLを返します。

これは、使用されているメインモジュールを識別する必要があります。現在のライブラリモジュールを識別する方法はありません。

関連する問題