我正在关注 alfresco wiki's guide to java backed webscripts,但无法让它工作。更糟糕的是,我无法在日志或其他内容中生成错误,或者在 /alfresco/service/index/all 中生成 webscript 列表。
除了 wiki 示例之外,我没有使用 AMP,而是为我的课程使用 jar。这是因为我必须将我的 webscripts 添加到当前构建到 jar 的现有应用程序中。
据我了解,创建 java 支持的 webscript 有三个主要步骤:
- 创建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;
}
}
露天/扩展/模板/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>
露天/扩展/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 文件夹中,然后重新启动服务器。但是,该网页脚本在其 URL (404) 下不可用,并且我发现在(非常干净的)日志中没有提及任何相关内容。它也没有在 webscripts 索引中列出,甚至没有加载失败。我觉得我弄乱了文件位置。