2017-11-10 9 views
0

私はexist-dbアプリケーションでRESTXQを使用しようとしています。これを "superapp"と呼ぶことができます。 私は/db/apps/superapp/collection.xconfにrestxqトリガを追加しました:eXist-dbにRESTXQモジュールを登録するには?

<collection xmlns="http://exist-db.org/collection-config/1.0"> 
    <index xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
     <fulltext default="none" attributes="false"/> 
    </index> 
    <triggers> 
     <trigger class="org.exist.extensions.exquery.restxq.impl.RestXqTrigger"/> 
    </triggers> 
</collection> 

は、それから私は、フォルダ/ DB /アプリケーション/ superapp /モジュールにファイル "restxq-test.xql" を追加しました:

xquery version "3.0"; 

module namespace test="http://exist-db.org/apps/restxq/test"; 


declare namespace rest="http://exquery.org/ns/restxq"; 
declare namespace output="http://www.w3.org/2010/xslt-xquery-serialization"; 


declare 
    %rest:GET 
    %rest:path("/super") 
    %output:media-type("text/html") 
    %output:method("html5") 
    %rest:query-param("user", "{$user}", "Guest") 
function test:hello($user as xs:string*) { 
    let $title := 'Hello ' 
    return 
     <html xmlns="http://www.w3.org/1999/xhtml"> 
      <head> 
       <title>{$title}</title> 
      </head> 
      <body> 
       <h1>{$title , $user}</h1> 
      </body> 
     </html> 
}; 

しかし、この新しいモジュールがrestxqに「知っている」ようにするにはどうすればよいですか?明らかにそれは自動的には行われません。私が呼び出した場合、 "xyz.com:8080/exist/restxq/super?user=Johnは" 私は

HTTP ERROR 405 

Problem accessing /exist/restxq/super. Reason: 

    HTTP method GET is not supported by this URL 

は、私が存在し、再起動を取得し、私がチェックの/ var/www /の存在/ webappの/ WEB-INF /ログ/ restxq.logしかしそこにはエントリがありません...私は関数と属性のマッピングが正しいと確信しています。 "/db/apps/demo/examples/templating/restxq-demo.xql"(これは明らかに登録されています)に同じ機能を追加すると、完璧に機能します。だから私は新しいモジュールがちょうど登録されていないと思います。どうやってやるの?

答えて

2

私はコメントを投稿しますが、十分なポイントがありません。私はあなたのアプリケーションでそれを使用していないので、これはRESTXQであなたのすべての問題を解決するつもりかどうかはわかりませんが、それはあなたが間違ったコレクションにcollection.xconfファイルを配置したようです。 システムコレクションに入れる:/db/system/config。これは、設定ファイルが/db/system/config/db/apps/superappコレクションにあることを意味します。 documentation-pageのexist-db Webサイトにあるトリガーに関する詳細情報:Configuring Database Triggers

+0

ありがとうございました。これはうまくいった。しかし、私はRESTXQを使っているすべてのデモアプリケーションがなぜ/db/apps/appXYZ/collection.xconfフォルダにトリガーを追加するのか不思議です。それは私のような初心者にとってはちょっと混乱します。 –

+0

申し訳ありませんが、それらのアプリはひどく設計されています。彼らは便宜のために自分のコレクションにそれを持っていて、pre-install.xqlはファイルをコピーするのではなく、 – adamretter

+0

をコピーします.Dのおかげで助けと情報 –

関連する問題