Author: fmoga
Date: Tue Jul 26 10:16:11 2011
New Revision: 1151052

URL: http://svn.apache.org/viewvc?rev=1151052&view=rev
Log: (empty)

Added:
    
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/README
Modified:
    
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/pom.xml
    
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/src/main/webapp/WEB-INF/web.composite

Added: 
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/README
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/README?rev=1151052&view=auto
==============================================================================
--- 
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/README
 (added)
+++ 
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/README
 Tue Jul 26 10:16:11 2011
@@ -0,0 +1,65 @@
+Tuscany - Learning More - Binding Websocket - Autocomplete Webapp
+-----------------------------------------------------------------
+
+This sample demonstrates how Tuscany can expose services via websockets 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.websocket port="8090"/> to a service definition, 
the 
+Tuscany runtime will start a websocket server listening for requests coming
+in for the exposed service at the specified port. If no port is specified, the
+runtime will use port 9000 as a default.  
+
+The websocket binding uses embedded Jetty instances as websocket servers. At 
the
+moment, Jetty 8.0.0-M3 is used which has support for the 00, 01, 06 and 07 
+versions of the websocket protocol drafts. You should check if the browser of
+your choice supports one of these protocol versions.
+
+The websocket binding also features a javascript API to simulate SCA in the 
+browser. In order to use it, the following script has to be included in the
+client page: 
+       <script type="text/javascript" 
+               src="org.apache.tuscany.sca.WebsocketComponentContext.js">
+       </script>
+       
+This will inject proxies for all services defined in the composite that are 
+using binding.websocket. All invocation and connection management is handled
+under the hood so in order to invoke a websocket service, the following should
+be called:
+       Tuscany.WebsocketComponentContext.<component name>.<service 
name>.<operation name>(<parameters>);
+
+Given the asynchornous nature of websockets, a function should be defined in
+order to handle responses received for a certain service operation. This should
+be done as follows:
+       Tuscany.WebsocketComponentContext.<component name>.<service 
name>.<operation name>.responseHandler = function(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 
websocket 
+connection to handle the communication between a browser client and all 
services 
+defined using binding.websocket on the same port. Requests and responses will 
get
+multiplexed via the same channel and get routed to the appropriate service 
+implementation, respectively javascript function.
+
+In order to run the sample, you can run "mvn jetty:run" which will start a 
Jetty
+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-websocket-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 websocket connection 
using 
+the developer tools provided by your browser.
+
+The websocket 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 ([email protected]).
\ No newline at end of file

Modified: 
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/pom.xml
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/pom.xml?rev=1151052&r1=1151051&r2=1151052&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/pom.xml
 (original)
+++ 
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/pom.xml
 Tue Jul 26 10:16:11 2011
@@ -17,7 +17,8 @@
  * specific language governing permissions and limitations
  * under the License.
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
        <modelVersion>4.0.0</modelVersion>
        <parent>
                <groupId>org.apache.tuscany.sca</groupId>
@@ -46,6 +47,16 @@
                        <scope>compile</scope>
                </dependency>
        </dependencies>
+
+       <build>
+               <plugins>
+                       <plugin>
+                               <groupId>org.mortbay.jetty</groupId>
+                               <artifactId>maven-jetty-plugin</artifactId>
+                               <version>6.1.26</version>
+                       </plugin>
+               </plugins>
+       </build>
        
 </project>
 

Modified: 
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/src/main/webapp/WEB-INF/web.composite
URL: 
http://svn.apache.org/viewvc/tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/src/main/webapp/WEB-INF/web.composite?rev=1151052&r1=1151051&r2=1151052&view=diff
==============================================================================
--- 
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/src/main/webapp/WEB-INF/web.composite
 (original)
+++ 
tuscany/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/src/main/webapp/WEB-INF/web.composite
 Tue Jul 26 10:16:11 2011
@@ -27,14 +27,13 @@
                        class="sample.CountryServiceImpl" />
                <service name="CountryService">
                        <interface.java interface="sample.CountryService" />
-                       <tuscany:binding.websocket />
+                       <tuscany:binding.websocket port="8090" />
                </service>
                <reference name="repository" 
target="CountryRepositoryComponent" />
        </component>
 
        <component name="CountryRepositoryComponent">
-               <implementation.java
-                       class="sample.CountryRepositoryImpl" />
+               <implementation.java class="sample.CountryRepositoryImpl" />
                <property name="fileName">countries.txt</property>
        </component>
 


Reply via email to