tuscany-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From conflue...@apache.org
Subject [CONF] Apache Tuscany: SCA Java binding.jsonrpc (page edited)
Date Mon, 23 Jul 2007 13:34:01 GMT
SCA Java binding.jsonrpc (TUSCANY) edited by ant
      Page: http://cwiki.apache.org/confluence/display/TUSCANY/SCA+Java+binding.jsonrpc
   Changes: http://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=54462&originalVersion=18&revisedVersion=19






Content:
---------------------------------------------------------------------

{section:border=false}
{column:width=15%}
{include: SCA Java Subproject Menu}
{include: Java SCA Menu New}
{column}
{column:width=85%}

h3. <binding.jsonrpc>

Tuscany supports [JSON-RPC|http://json-rpc.org/] as a protcol for use with SCA services by
using the <binding.jsonrpc> SCDL extension. This enables remote web browser clients
to easily make RPC style calls to server-side SCA components.

This binding has no attributes or elements so to include it on a SCA service simply requires
the following SCDL:

{code}
   <binding.jsonrpc/>
{code}

Also see [<binding.ajax|SCA Java binding.ajax] which provides some similar function.

Any JSON-RPC client may be used to access SCA services which use <binding.jsonrpc>,
but to simplify the task for web browsers the binding can generate a script which may be included
within an HTML document to set up proxy objects for each SCA service within the HTML page
environment. 

This script is used by simply including the following script tag within the HTML page:

{code}
    <script type="text/javascript" src="SCA/SCADomain/scaDomain.js" />
{code}

This initializes the proxys for the SCA services which can then be used make requests to the
server-side components. For example, if there was a service named "myService" which had operations
"aOnewayRequest" and "anRpcRequest" the scripts in the HTML page could now invoke these opperations
with the following:

{code}
myService.aOnewayRequest(args);
{code}
or
{code}
myService.anRpcRequest(args, responseFunction);
{code}

In that example 'responseFunction' is the name of a function which is called to process the
response and which gets called asynchronously on another thread when the response is avaialble.
RPC requests are done this way instead of the simpler "answer = myService.anRpcRequest(args)"
to avoid hanging the browser while the (potentialy slow) request is being processed. An example
of the responseFunction for the previous example is:
{code}
function responseFunction(answer){
  // do something with answer
}
{code}

h4. Using SCA JSON-RPC services with Dojo

Apache Tuscany JSON-RPC services provide built-in support for [Dojo RPC|http://manual.dojotoolkit.org/WikiHome/DojoDotBook/Book9].
The [Dojo|http://dojotoolkit.org/] toolkit is a popular framework for writing Ajax/Web 2.0
style browser client applications. Tuscany SCA services which use <binding.jsonrpc>
will by default support  the [Simple Method Description (SMD) |http://dojo.jot.com/SMD] protocol.
SMD is similar to ?wsdl for Web services, entering a service endpoint appended with ?smd will
return a SMD descriptor for the service. 

Using Tuscany SCA services with Dojo can therefore be as simple as the following:
{code}
  var myService = new dojo.rpc.JsonService("SCA/SCADomain/myService?smd");
{code}


h4. Some examples:

There are two samples showing using <binding.jsonrpc>, one which uses the Dojo Toolkit
on the client, and another which uses the Tuscany scaDomain.js script. The samples are [helloworld-dojo|https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/helloworld-dojo/]
and [helloworld-jsonrpc|https://svn.apache.org/repos/asf/incubator/tuscany/java/sca/samples/helloworld-jsonrpc/].

{info:title=Differences between <binding.jsonrpc> and <binding.ajax>}
The current Tuscany SCA runtime supports <binding.jsonrpc> and <binding.ajax>
which provide similar functionality. The differences are:
* <binding.jsonrpc> supports the SMD protocol enabling easy use with Dojo, <binding.ajax>
does not support SMD
* <binding.ajax> supports SCA references and using [COMET|http://en.wikipedia.org/wiki/Comet_(programming)]
style asynchronous operation, <binding.jsonrpc> does not
* <binding.jsonrpc> uses the standard [JSON-RPC|http://json-rpc.org/] protocol, <binding.ajax>
uses a proprietry protocol using [DWR|http://getahead.org/dwr/] 

These differences should be resolved by the Tuscany SCA 1.0 release.
{info}

{warning:title=Changes since 0.90 release}
The Tuscany JSON-RPC and Ajax binding's have had significant functional and useability changes
since the 0.90 release. It is recomended that if possible the latest code is used (the description
on this page is based on the latest code).
{warning}


{column}
{section} 

---------------------------------------------------------------------
CONFLUENCE INFORMATION
This message is automatically generated by Confluence

Unsubscribe or edit your notifications preferences
   http://cwiki.apache.org/confluence/users/viewnotifications.action

If you think it was sent incorrectly contact one of the administrators
   http://cwiki.apache.org/confluence/administrators.action

If you want more information on Confluence, or have a bug to report see
   http://www.atlassian.com/software/confluence



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org


Mime
View raw message