私は alfresco wiki のガイドに従って Java に裏打ちされた Web スクリプトを使用していますが、それを機能させることができません。さらに悪いことに、ログなどにエラーを生成したり、/alfresco/service/index/all にリストされている Web スクリプトを取得したりすることはできません。
wiki の例以外では、AMP を使用していませんが、クラスには jar を使用しています。これは、現在 jar にビルドされている既存のアプリに Web スクリプトを追加する必要があるためです。
私が理解している限りでは、Java でサポートされた Web スクリプトを作成するには、次の 3 つの主要な手順があります。
- Java クラスを作成する
- Bean を登録する
- 記述子を配置する
これを次のように実装しました。ファイルの場所は、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 インデックスにリストされていません。ファイルの場所をめちゃくちゃにしているように感じます。