0

我正在关注 alfresco wiki's guide to java backed webscripts,但无法让它工作。更糟糕的是,我无法在日志或其他内容中生成错误,或者在 /alfresco/service/index/all 中生成 webscript 列表。

除了 wiki 示例之外,我没有使用 AMP,而是为我的课程使用 jar。这是因为我必须将我的 webscripts 添加到当前构建到 jar 的现有应用程序中。

据我了解,创建 java 支持的 webscript 有三个主要步骤:

  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;
    }
}

露天/扩展/模板/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 索引中列出,甚至没有加载失败。我觉得我弄乱了文件位置。

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 脚本引擎拾取。结束获取由 Web 脚本引擎拾取。它告诉 Web 脚本引擎要处理哪种 HTTP 方法。在这种情况下,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 回答
2

我认为描述文件应该命名为footype.get.desc.xml

于 2013-06-27T08:54:16.177 回答