2014-10-09 49 views
2

我知道我可能会向下投票支持这个简单的问题...如何调用露天(库)webscript从分享中的Java

在Javascript中很容易(甚至是不可思议的):remote.call("/api/...")

如何我在Java中得到这个吗?

我读了很多帖子,如this one,其中Alfresco(存储库)URL是硬编码http://localhost:8080/alfresco,或者未定义(例如:REPO_WEB_SERVICE_URL)。

是否有助手可以提供存储库的URL?是否有一个类与JavaScript根对象remote一样?

对不起,如果答案很明显,我只是看不到它,我正在寻找几个小时了,我开始为它疯狂起来,因为它应该是一件容易的事情...

+0

好的我很愚蠢,REPO_WEB_SERVICE_URL可能不是Alfresco存储库的绝对URL,但是是一个相对的...我会测试这个片段,我会回答我自己的问题,如果我得到它的权利... – boumbh 2014-10-09 09:27:02

回答

5

为了使您的共享脚本中的遥控器可用,您需要使用Spring注入遥控器。

设置上下文文件来设置远程变量:

<bean id="MyEvaluator" class="org.me.MyEvaluator"> 
    <property name="remote" ref="webframework.webscripts.scriptremote" /> 
</bean> 

然后,你需要在你的Java类来创建变量。鉴于你可以使用它,只要你喜欢:

public class MyEvaluator extends BaseEvaluator { 

    private ScriptRemote remote; 

    public void setRemote(ScriptRemote remote) { 
     this.remote = remote; 
    } 

    public void doScriptCall() { 
     Response response = remote.call("/api/..."); 
    } 

} 
+0

谢谢,我可以注入'ScriptRemote'类,它回答了我的问题,但我最终采取了另一种方式,因为我不喜欢在我的Java类上使用'ScriptXXX'方法(我不知道是否是我的)。我错过了版本库网址,并设法通过搜索源代码来获取它。 – boumbh 2014-10-10 16:11:55

1

部分答案,以获得Alfresco存储库的基本路径。

注入connectorService到bean:

<bean id="MyEvaluator" class="org.me.MyEvaluator"> 
    <property name="connectorService" ref="connector.service" /> 
</bean> 

然后在类,检索露天端点:

String alfrescoEndPoint = connectorService.getConnector("alfresco").getEndpoint(); 

alfrescoEndPoint将根据什么在alfresco-global.properties设置类似http://host:port/alfresco/s