java支持的webscript不';我根本就没出现

java支持的webscript不';我根本就没出现,java,spring,rest,alfresco,Java,Spring,Rest,Alfresco,我正在遵循alfresco wiki的java支持WebScript指南,但无法使其正常工作。更糟糕的是,我无法在日志或其他文件中生成错误,或者在/alfresco/service/index/all中生成webscript列表 除了wiki示例之外,我的类使用的不是AMP而是jar。这是因为我必须将我的WebScript添加到当前构建到jar的现有应用程序中 据我所知,创建java支持的webscript有三个主要步骤: 创建java类 注册豆子 放置描述符 我实现了如下。文件位置相对于jar

我正在遵循alfresco wiki的java支持WebScript指南,但无法使其正常工作。更糟糕的是,我无法在日志或其他文件中生成错误,或者在/alfresco/service/index/all中生成webscript列表

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

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

  • 创建java类
  • 注册豆子
  • 放置描述符
  • 我实现了如下。文件位置相对于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;
        }
    }
    
    包nl.mark.alfresco.myservice.webscript;
    导入java.util.HashMap;
    导入java.util.Map;
    导入org.springframework.extensions.webscripts.DeclarativeWebScript;
    导入org.springframework.extensions.webscripts.Status;
    导入org.springframework.extensions.webscripts.WebScriptRequest;
    公共类GetFooTypes扩展了DeclarativeWebScript{
    @凌驾
    受保护映射executeImpl(WebScript请求请求,状态){
    映射模型=新的HashMap();
    model.put(“类型”,“foo\”,“bar\”);
    收益模型;
    }
    }
    
    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>
    
    <?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>
    
    
    检索与条形图类型关联的foo类型列表。
    返回一个空JSON数组或一个名为“types”的JSON数组,该数组以字符串形式填充foo类型。
    /标记/cacher/footype?类型代码={code}
    用户
    标记缓存
    
    alfresco/extension/markcontext.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>
    
    <?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>
    
    
    
    markcontext.xml
    文件还包含正确拾取的其他注册


    最后,这个jar被放置在alfresco的WEB-INF/lib文件夹中,然后服务器被重新启动。然而,webscript在其URL(404)下不可用,我在(非常干净的)日志中没有发现任何相关内容。它也没有列在webscripts索引中,即使加载失败也没有。我觉得我弄乱了文件的位置。

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

    完整的文件夹和文件名

    alfresco/extension/templates/webscripts/nl/mark/cacher/footype.get.desc.xml
    
    定义

    nl/mark/cacher包

    FootType的服务id

    HTTP GET方法的绑定

    <bean id="webscript.nl.mark.cacher.footype.get" 
          class="nl.mark.alfresco.myservice.webscript.GetFooTypes"
          parent="webscript">
    </bean>
    
    
    
    前缀webscript由Web脚本引擎拾取。 Web脚本引擎将获取结束get。它告诉Web脚本引擎要处理哪个HTTP方法。在本例中,HTTP GET

    因此,在代码中,在文件描述符文件名中缺少了。get

    alfresco/extension/templates/webscripts/nl/mark/cacher/footype.get.desc.xml
    
    参考:
    完整的文件夹和文件名

    alfresco/extension/templates/webscripts/nl/mark/cacher/footype.get.desc.xml
    
    定义

    nl/mark/cacher包

    FootType的服务id

    HTTP GET方法的绑定

    <bean id="webscript.nl.mark.cacher.footype.get" 
          class="nl.mark.alfresco.myservice.webscript.GetFooTypes"
          parent="webscript">
    </bean>
    
    
    
    前缀webscript由Web脚本引擎拾取。 Web脚本引擎将获取结束get。它告诉Web脚本引擎要处理哪个HTTP方法。在本例中,HTTP GET

    因此,在代码中,在文件描述符文件名中缺少了。get

    alfresco/extension/templates/webscripts/nl/mark/cacher/footype.get.desc.xml
    
    参考:

    Quick guess(此处无运行露天):将描述符重命名为“footype.get.desc.xml”Quick guess(此处无运行露天):将描述符重命名为“footype.get.desc.xml”我在问题中犯了一个错误,描述符的名称实际上是
    footype.desc.get.xml
    。事实上,这仍然是错误的。解决方案:
    footype.get.desc.xml
    如您所说。在这件事上纠缠了一天多,我想我现在要去掐死什么了:P。谢谢!SpringbeanID应该是
    webscript.nl.mark.cacher.footype.get
    ,如问题中提供的配置中所示。您缺少服务ID。我在问题中犯了一个错误,描述符实际上名为
    footype.desc.get.xml
    。事实上,这仍然是错误的。解决方案:
    footype.get.desc.xml
    如您所说。在这件事上纠缠了一天多,我想我现在要去掐死什么了:P。谢谢!SpringbeanID应该是
    webscript.nl.mark.cacher.footype.get
    ,如问题中提供的配置中所示。您缺少服务ID。