0

私は alfresco wiki のガイドに従って Java に裏打ちされた Web スクリプトを使用していますが、それを機能させることができません。さらに悪いことに、ログなどにエラーを生成したり、/alfresco/service/index/all にリストされている Web スクリプトを取得したりすることはできません。

wiki の例以外では、AMP を使用していませんが、クラスには jar を使用しています。これは、現在 jar にビルドされている既存のアプリに Web スクリプトを追加する必要があるためです。

私が理解している限りでは、Java でサポートされた Web スクリプトを作成するには、次の 3 つの主要な手順があります。

  1. Java クラスを作成する
  2. Bean を登録する
  3. 記述子を配置する

これを次のように実装しました。ファイルの場所は、jar のルートに相対的です。 nl/mark/alfresco/myservice/webscript/GetFooTypes.java

package nl.mark.alfresco.myservice.webscript;

import java.util.HashMap;
import java.util.Map;

import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptRequest;

public class GetFooTypes extends DeclarativeWebScript {
    @Override
    protected Map<String, Object> executeImpl(WebScriptRequest req, Status status) {
        Map<String, Object> model = new HashMap<String, Object>();
        model.put("types", "[\"foo\", \"bar\"]");
        return model;
    }
}

alfresco/extension/templates/webscripts/nl/mark/cacher/footype.desc.xml

<webscript>
    <shortname>Retrieve a list of foo types associated to a bar type.</shortname>
    <description>Returns an empty JSON array or a JSON array filled with foo types as Strings, named 'types'.</description>
    <url>/mark/cacher/footype?typecode={code}</url>
    <authentication>user</authentication>
    <family>Mark cacher</family>
</webscript>

alfresco/extension/mark-context.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>

<beans>
    <!-- Java backed webscripts -->
    <bean id="webscript.nl.mark.cacher.footype.get" class="nl.mark.alfresco.myservice.webscript.GetFooTypes"
        parent="webscript">
    </bean>
</beans>

このmark-context.xmlファイルには、正しくピックアップされた他の登録も含まれています。

最後に、この jar は alfresco の WEB-INF/lib フォルダーに配置され、その後サーバーが再起動されます。ただし、Webscript はその URL (404) で利用できず、(非常にきれいな) ログに関連するものは何も記載されていません。また、ロードに失敗したとしても、webscripts インデックスにリストされていません。ファイルの場所をめちゃくちゃにしているように感じます。

4

2 に答える 2

4

完全なフォルダーとファイル名

alfresco/extension/templates/webscripts/nl/mark/cacher/footype.get.desc.xml

定義し、

nl/mark/cacher のパッケージ、

footype のサービス ID、

HTTP GET メソッドへのバインディング

<bean id="webscript.nl.mark.cacher.footype.get" 
      class="nl.mark.alfresco.myservice.webscript.GetFooTypes"
      parent="webscript">
</bean>

プレフィックス webscript は、Web スクリプト エンジンによって取得されます。最後の get は、Web スクリプト エンジンによって取得されます。どの HTTP メソッドを処理するかを Web スクリプト エンジンに指示します。この場合、HTTP GET

したがって、コードでは、ファイル記述子のファイル名に.getがありませんでした

参照: http://wiki.alfresco.com/wiki/Web_Scripts http://wiki.alfresco.com/wiki/Java-backed_Web_Scripts_Samples

于 2013-06-27T09:07:00.690 に答える