Creating a callback example involves creating an HTML page that invokes the
Hello User web script with a callback that displays the JSON response in an alert
box.
Note: For security reasons, this mechanism is disabled by default. To enable it on any web
scripts container, set the bean property: allowCallbacks = true. This
change can be made in web-scripts-application-context.xml, or more
conveniently outside of the SkyVault.war file in
tomcat/shared/classes/alfresco/extension/custom-web-context.xml.
- Create a custom-web-context.xml file in the extension directory (tomcat/shared/classes/alfresco/extension).
- Copy the complete bean bean id="webscripts.container from the web-scripts-application-context.xml file located (v5.1) in the ./alfresco/WEB-INF/lib/alfresco-remote-api-5.1.jar/alfresco/web-scripts-application-context.xml into the custom context file.
-
Add the property <property name="allowCallbacks"> to the bean
(see example below):
<bean id="webscripts.container" class="org.alfresco.repo.web.scripts.TenantRepositoryContainer" parent="baseAlfrescoRepositoryContainer" init-method="setup"> <property name="configService" ref="webscripts.config" /> <property name="name"><value>Repository</value></property> <property name="allowCallbacks"><value>true</value></property> <property name="scriptObjects"> <map merge="true"> <entry key="paging"> <ref bean="webscripts.js.paging"/> </entry> </map> </property> <property name="webScriptsRegistryCache" ref="webScriptsRegistryCache"/> <!-- Use the time-limited transaction helper to keep request times to an acceptable duration --> <property name="transactionService" ref="transactionService" /> <!-- The transaction helper used to generate error responses must be unlimited --> <property name="fallbackTransactionHelper" ref="retryingTransactionHelper" /> <property name="authorityService" ref="AuthorityService" /> <property name="repository" ref="repositoryHelper" /> <property name="repositoryImageResolver" ref="webscripts.repo.imageresolver" /> <property name="templateProcessorRegistry" ref="webscripts.repo.registry.templateprocessor" /> <property name="scriptProcessorRegistry" ref="webscripts.repo.registry.scriptprocessor" /> <property name="descriptorService" ref="DescriptorService" /> <property name="tenantAdminService" ref="tenantAdminService" /> <property name="encryptTempFiles" value="${webscripts.encryptTempFiles}"/> <property name="tempDirectoryName" value="${webscripts.tempDirectoryName}"/> <property name="memoryThreshold" value="${webscripts.memoryThreshold}"/> <property name="maxContentSize" value="${webscripts.setMaxContentSize}"/> </bean>
- Restart application server.
-
Create the HTML page.
- Create a file named callback.html on your machine's local file system.
-
Edit the file and add the following HTML:
<html> <body> <script> // callback function to display greeting function showGreeting(res) {alert(res.greeting + ' ' + res.user);} // invoke web script hello user web script var script = document.createElement('SCRIPT'); script.type = 'text/javascript'; script.src = 'http://localhost:8080/alfresco/s/hellouser.json?alf_callback=showGreeting'; document.body.appendChild(script); </script> </body> </html>
-
Test the callback.
- Open the file callback.html file in your web browser.
- If prompted, log in with the user name admin and password admin.
An alert box displaying the message hello admin indicates your callback is working.