HTTP-запрос от WebScript в Alfresco - PullRequest
       34

HTTP-запрос от WebScript в Alfresco

5 голосов
/ 02 сентября 2011

Я пишу WebScript в Alfresco с использованием контроллера JS и хочу сделать HTTP-запрос к локальному HTTP-ресурсу.Этот ресурс является приложением на основе Java и предоставляет мне собственный REST API.

Мой WebScript не является компонентом общего доступа: поэтому у меня нет объекта remote для вызова другого веб-скрипта.

Как сделать HTTP-запрос к локальному ресурсу (что-то вроде '/ sdo / documents / getName? Type = fl') из WebScript?

1 Ответ

5 голосов
/ 02 сентября 2011

EDIT: Alfresco переопределяет бин Spring Surf webscripts.container, удаляя определение remoteweb-scripts-application-context.xml из remote-api):

<bean id="webscripts.container" class="org.alfresco.repo.web.scripts.RepositoryContainer" parent="webscripts.abstractcontainer">
      <property name="name"><value>Repository</value></property>
      <property name="scriptObjects">
         <map merge="true">
           <entry key="paging">
              <ref bean="webscripts.js.paging"/>
           </entry>
         </map>
<!-- ..... -->
</bean>

Я предлагаю вам снова включить его как настраиваемый Javascript API объект корневого уровня.


Корневой объект remote происходит из среды Spring Surf , что означает, что он у вас есть, независимо от разработки веб-сценариев для репозитория Alfresco или общего ресурса. В качестве доказательства приведем источник веб-скрипта , доступный на общедоступном сервере Alfresco CMIS (-> экземпляр репозитория Alfresco, admin / admin, если вас попросят войти):

var serviceUrl = (args.service === null) ? "/api/repository" : args.service;
var conn = remote.connect("alfresco");
var result = conn.get(stringUtils.urlEncodeComponent(serviceUrl));

var service = atom.toService(result.response);
var workspace = service.workspaces.get(0);
model.repo = workspace.getExtension(atom.names.cmisra_repositoryInfo);

Следующий фрагмент взят из spring-surf-application-context.xml, найденного внутри spring-webscripts-1.0.0.CI-SNAPSHOT.jar Alfresco 3.4.0, где корневой объект remote получает свое определение:

   <bean id="webscripts.container" parent="webscripts.abstractcontainer" class="org.springframework.extensions.webscripts.LocalWebScriptRuntimeContainer">
      <property name="name"><value>Spring Surf Container</value></property>
      <property name="registry" ref="webscripts.registry" />
      <property name="searchPath" ref="webframework.webscripts.searchpath" />
      <property name="templateProcessorRegistry" ref="webframework.webscripts.registry.templateprocessor" />
      <property name="scriptProcessorRegistry" ref="webframework.webscripts.registry.scriptprocessor" />
      <property name="scriptParameterFactoryRegistry" ref="webscripts.web.scriptparameterfactoryregistry" />
      <property name="configService" ref="web.config" />
      <property name="scriptObjects">
         <map merge="true">
            <entry key="remote" value-ref="webframework.webscripts.scriptremote" />
         </map>
      </property>
      <property name="processorModelHelper" ref="processor.model.helper"/>
      <property name="extensibilityModuleHandler" ref="webscripts.extensibility.handler"/>
   </bean>

   <bean id="webframework.webscripts.scriptremote" class="org.springframework.extensions.webscripts.ScriptRemote">
      <property name="configService" ref="web.config"/>
      <property name="connectorProvider" ref="webframework.connector.provider"/>
   </bean>
...