java支持的webscript根本没有出现

时间:2013-06-27 08:20:22

标签: java spring rest alfresco

我正在关注露天维基的java支持网页脚本指南,但无法让它发挥作用。更糟糕的是,我无法在日志或其他方面产生错误,或者/ alfresco / service / index / all中的webscript列表。

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

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

  1. 创建java类
  2. 注册bean
  3. 放置描述符
  4. 我实现了如下。文件位置相对于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索引中列出,甚至没有加载失败。我觉得我弄乱了文件位置。

2 个答案:

答案 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