summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/contrib
diff options
context:
space:
mode:
authorfmoga <fmoga@13f79535-47bb-0310-9956-ffa450edef68>2011-07-26 10:16:11 +0000
committerfmoga <fmoga@13f79535-47bb-0310-9956-ffa450edef68>2011-07-26 10:16:11 +0000
commitbbef1e502a5277517ccfe64617d9aeed2e8af0de (patch)
tree35c83435904e007146faac26f7e60c3450b211a6 /sca-java-2.x/contrib
parent17beb3877e4643154bcff5be170d47ac3fa586a0 (diff)
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1151052 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x/contrib')
-rw-r--r--sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/README65
-rw-r--r--sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/pom.xml13
-rw-r--r--sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/src/main/webapp/WEB-INF/web.composite5
3 files changed, 79 insertions, 4 deletions
diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/README b/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/README
new file mode 100644
index 0000000000..6f7f3e13ab
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/README
@@ -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 (dev@tuscany.apache.org). \ No newline at end of file
diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/pom.xml b/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/pom.xml
index e73ed58096..dd990b231e 100644
--- a/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/pom.xml
+++ b/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/pom.xml
@@ -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>
diff --git a/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/src/main/webapp/WEB-INF/web.composite
index b529509fb0..fc1c177e9b 100644
--- a/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/src/main/webapp/WEB-INF/web.composite
+++ b/sca-java-2.x/contrib/samples/learning-more/binding-websocket/autocomplete-webapp/src/main/webapp/WEB-INF/web.composite
@@ -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>