我正在关注露天维基的java支持网页脚本指南,但无法让它发挥作用。更糟糕的是,我无法在日志或其他方面产生错误,或者/ alfresco / service / index / all中的webscript列表。
除了wiki示例之外,我没有使用AMP而是使用jar作为我的课程。这是因为我必须将我的webscripts添加到当前构建到jar的现有应用程序中。
据我了解,创建java支持的webscript有三个主要步骤:
我实现了如下。文件位置相对于jar的根目录。 的 NL /标记/露天/为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 /标记/ 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>
露天/扩展/标记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索引中列出,甚至没有加载失败。我觉得我弄乱了文件位置。
答案 0 :(得分:4)
完整的文件夹和文件名
alfresco/extension/templates/webscripts/nl/mark/cacher/footype.get.desc.xml
定义,
包装为nl / mark / cacher,
脚注的服务ID,
绑定到HTTP GET方法
<bean id="webscript.nl.mark.cacher.footype.get"
class="nl.mark.alfresco.myservice.webscript.GetFooTypes"
parent="webscript">
</bean>
Web Script引擎会选择前缀webscript。 结束get由Web Script引擎获取。它告诉Web Script引擎要处理哪种HTTP方法。在这种情况下,HTTP GET
因此,在您的代码中,您错过了文件描述符文件名
中的 .get参考: http://wiki.alfresco.com/wiki/Web_Scripts http://wiki.alfresco.com/wiki/Java-backed_Web_Scripts_Samples
答案 1 :(得分:2)
我认为描述文件应该命名为footype.get.desc.xml