summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/branches/2.0/samples/learning-more/binding-comet/autocomplete-webapp/README
diff options
context:
space:
mode:
Diffstat (limited to 'sca-java-2.x/branches/2.0/samples/learning-more/binding-comet/autocomplete-webapp/README')
-rw-r--r--sca-java-2.x/branches/2.0/samples/learning-more/binding-comet/autocomplete-webapp/README79
1 files changed, 79 insertions, 0 deletions
diff --git a/sca-java-2.x/branches/2.0/samples/learning-more/binding-comet/autocomplete-webapp/README b/sca-java-2.x/branches/2.0/samples/learning-more/binding-comet/autocomplete-webapp/README
new file mode 100644
index 0000000000..57702664d7
--- /dev/null
+++ b/sca-java-2.x/branches/2.0/samples/learning-more/binding-comet/autocomplete-webapp/README
@@ -0,0 +1,79 @@
+Tuscany - Learning More - Binding Comet - Autocomplete Webapp
+-----------------------------------------------------------------
+
+This sample demonstrates how Tuscany can expose services via Comet techniques
+as well as how to interact with them using Tuscany's javascript API.
+
+This project contains a service (CountryService) that handles requests asking
+for country names starting with a certain prefix. The service implementation
+uses a country repository to fetch the necessary data.
+
+By adding <tuscany:binding.comet/> to a service definition, the Tuscany runtime
+will handle the communication between the browser client and the service
+implementation using Comet techniques. This enables bidirectional communication
+over HTTP, therefore enabling server push. For more information, check
+http://en.wikipedia.org/wiki/Comet_(programming).
+
+The comet binding is using the Atmosphere Framework under the hood to acomodate
+as many deployment envorinments as possible. Basically, it checks if the
+application server supports Servlet 3.0 falling back to a number of native
+comet solutions provided by vendors (Jetty, Tomcat, WebLogic, GlassFish and
+others). If none is available, Atmosphere will fallback to blocking IO.
+
+Invoking comet services can be done using Tuscany's javascript API which simulates
+SCA in the browser. It uses the Atmosphere jQuery plugin under the hood. In order
+to use it, the following script has to be included in the client page:
+ <script type="text/javascript"
+ src="tuscany-comet-js/org.apache.tuscany.sca.CometComponentContext.js">
+ </script>
+
+The javascript toolkit permits choosing between two comet techniques: HTTP streaming
+and long polling. More detailed information about them can be found on the previously
+mentioned wikipedia page.
+
+First, a connect operation has to be issued in order to initiate communication
+with the server side using the technique of your choice. This is done using the
+connection method as follows:
+ SCA.TuscanyComet.connect('streaming'); // for HTTP streaming
+ SCA.TuscanyComet.connect('long-polling'); // for long polling
+ SCA.TuscanyComet.connect(); // starts with HTTP streaming and falls back to long polling if necessary
+
+The Tuscany Comet toolkit will inject proxies for all services defined in the composite
+that are using binding.comet. All invocation and connection management is handled
+under the hood so in order to invoke a comet service, the following should be called:
+ SCA.CometComponentContext.<service name>.<operation name>(<parameters>, callback);
+
+The callback parameter is the function that will handle responses received for a
+certain service operation. It has a single argument which is the response:
+ function callback(response) {
+ // handle response
+ };
+
+Note that the data exchange is automatically handled by the binding, so the
+parameters should have the same structure as the data types defined in the method
+definition. Also, the response will have the same data type as the return type of
+the service method. Objects are passed over the wire in JSON format.
+
+Another detail worth mentioning is that the binding will use a single HTTP
+connection to handle communication between a browser client and all services
+defined using binding.comet in the same composite. Requests and responses will get
+multiplexed via the same channel and get routed to the appropriate service
+implementation, respectively javascript function. This is done in order to avoid
+the 2 HTTP connection limit imposed by browsers. For more info, check
+http://www.openajax.org/runtime/wiki/The_Two_HTTP_Connection_Limit_Issue.
+
+In order to run the sample, you can execute "mvn clean install t7:run" which will
+start a Tomcat 7 instance automatically or use "mvn package" and deploy the resulting
+war to the application server of your choice.
+
+Next, point your browser at
+ http://localhost:8080/sample-binding-comet-autocomplete-webapp/
+
+You can see how suggestions are being received in real time when characters are
+entered in the text field. You can see the persistent HTTP streaming connection
+or long polling subsequent connections using the developer tools provided by
+your browser.
+
+The comet binding is an experimental binding so community feedback is much
+appreciated. Feel free to send comments or suggestions on the Apache Tuscany
+dev mailing list (dev@tuscany.apache.org). \ No newline at end of file